---
panlei
2019-11-14 00306764cf332822a699fb0e9d7ef58798dbca15
---
1个文件已修改
7 ■■■■ 已修改文件
algorithm/static/static.go 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
algorithm/static/static.go
@@ -95,6 +95,7 @@
}
// 判断一个区域内有没有静止的目标
func CompareAndSave(rule *protomsg.Rule, am *structure.AreaMap,lable *structure.Others,args *structure.SdkDatas,message *protomsg.SdkMessage) structure.LittleRuleResult {
    logger.Info("走了个体静止核心算法")
    initN := 5
    if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a977" && rule.SdkArgAlias == "duration" {
        if init,err := strconv.Atoi(rule.SdkArgValue); err != nil {
@@ -161,18 +162,20 @@
// 判断一个目标是否静止了指定时间
func SingleStatic(person *structure.Obj, am *structure.AreaMap,lable *structure.Others, argValue float64) (bool,*structure.Arg){
    logger.Info("单个目标的判断:")
    flag := false
    var o *structure.Arg = nil
    for _, obj := range am.FilterData {
        if person.Id == obj.Id {
            coincidenceDegree := PgsInterPercent(Rect2Point(person.Location), obj.Location, 1, 1)
            logger.Info("判断目标的重合度",coincidenceDegree)
            o = obj
            if coincidenceDegree >= argValue {
                flag = true
            }
        }
    }
    if flag { // 有一个对象保持静止(id相等并且重合度高于阈值)
    if flag { // 当前检测对象保持静止(id相等并且重合度高于阈值)
        flagTime := TimerAlarm(lable,person,flag,am.AreaId)
        if flagTime == "10" || flagTime == "11" {
            return flag,o
@@ -188,7 +191,7 @@
// 判断是否符合定时器条件
func TimerAlarm(oth *structure.Others,person *structure.Obj, result bool,areaId string) (string) {
    var flagTime string //
    logger.Info("目标的定时器:")
    rw.Lock()
        if result { // 结果为真