panlei
2019-11-06 04ef7bb77edfaae426a001c7b8f73f34978bb8ac
ruleserver/ruleToformula.go
@@ -67,6 +67,12 @@
               }
            }
         }
         // 人体追踪
         // 如果标签中含有持续时间首次报警的timeLabel的话则不需要过人体追踪,不然就没的插入了
         fk := TrackOrNot(args.RuleResult)
         if !fk {
            BodyIsSame(args,message)
         }
      }
   }
}
@@ -106,10 +112,10 @@
                  }
                  // 如果此结果为真且当前过的是yolo算法,应记下此规则所对应的sdkName,另外,还要去重 (后加:把此条触碰的区域id也记录下来)
                  if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) {
                     sdkNames = sdkName + ","
                     sdkNames = sdkName + " "
                  }
                  if strings.Contains(ruleResult.Result, "true") && !strings.Contains(polygonId, groupRule.Rules[j].PolygonId) {
                     polygonId = groupRule.Rules[j].PolygonId + ","
                     polygonId = groupRule.Rules[j].PolygonId + " "
                  }
                  resultSplice = append(resultSplice, &ruleResult)
               }
@@ -136,10 +142,10 @@
                  }
                  logger.Info("数量规则结果:", ruleResult.Result)
                  if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) {
                     sdkNames = sdkName + ","
                     sdkNames = sdkName + " "
                  }
                  if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(polygonId, groupRule.Rules[j].PolygonId) {
                     polygonId = groupRule.Rules[j].PolygonId + ","
                     polygonId = groupRule.Rules[j].PolygonId + " "
                  }
                  resultSplice = append(resultSplice, &ruleResult)
               }
@@ -165,10 +171,10 @@
                  }
                  logger.Info("时间规则结果:", ruleResult.Result)
                  if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) {
                     sdkNames = sdkName + ","
                     sdkNames = sdkName + " "
                  }
                  if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(polygonId, groupRule.Rules[j].PolygonId) {
                     polygonId = groupRule.Rules[j].PolygonId + ","
                     polygonId = groupRule.Rules[j].PolygonId + " "
                  }
                  resultSplice = append(resultSplice, &ruleResult)
               }
@@ -254,7 +260,9 @@
            for _, sdkData := range args.Sdkdata {
               if sdkData.IpcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && sdkNames != "" { // 把yolo数据的各个目标的坐标输出方便后面画框
                  for _, areaMap := range sdkData.AreaMapList {
                     locations = append(locations, putYolosToResult(areaMap)...)
                     if areaMap.IsEffective {
                        locations = append(locations, putYolosToResult(areaMap)...)
                     }
                  }
               }
            }
@@ -473,7 +481,6 @@
      }
      rw.Unlock()
      // 因为本帧数据不符合规则,所以也不用统计结果数组里的东西
   }
}
@@ -566,6 +573,7 @@
      // 处理的都是yolo数据
      if rule.PolygonId == am.AreaId { // 首先这条规则得是这个算法的规则,其次规则所对应的区域id要跟区域数据的id对的上
         if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 判断的是相似值,占比,尺寸等过滤条件,如果再有,还可以再加
            logger.Info("区域数据:",am.AreaJson)
            var args []*structure.Arg
            if rule.RuleWithPre == "&&" {
               args = am.FilterData
@@ -594,6 +602,9 @@
               }
            }
            am.TargetNum = len(am.FilterData) // 把符合条件的目标数量更新到targetNum字段
            for _,tar := range am.FilterData  {
               logger.Info("具体目标的坐标为",tar.Id,tar.Location)
            }
            if am.TargetNum > 0 {
               return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "true", rule.Sort}
            } else {