panlei
2019-07-10 40c09c362a2b8edab8e52ec2cc09dd7e0c883a4c
ruleserver/ruleToformula.go
@@ -197,7 +197,7 @@
   }
}
// 对单帧图像的判断 是舍弃(或者说对于某些需求可以放ES数据库一份)还是返回
// 对单帧图像的判断 thisSdkDatas  当前传入的这帧数据,cacheSdkData 定时器里缓存的一帧数据 没有就返回nil  (thisSdkDatas SdkDatas, cacheSdkDatas SdkDatas)
func Judge(args *SdkDatas) {
   if len(args.Sdkdata) > 0 {
      // 拿到本摄像机的区域
@@ -404,7 +404,7 @@
         ipcId := sdk.IpcId
         if ipcId == sdkData.IpcId {
            for _, areaMap := range sdkData.AreaMapList {
               duration(groupRule.Rules[j], &areaMap)
               duration(groupRule.Rules[j], &areaMap, args)
            }
         }
      }
@@ -661,9 +661,9 @@
            if result.(bool) {
               logger.Info("___________________________________________________________________联动任务报警")
               args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, "", groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText, []Rect{}})
               logger.Info("-------------------yolo结果标签", args.RuleResult["yolo"].([]Result))
               logger.Info("-------------------yolo结果标签有几个", len(args.RuleResult["yolo"].([]Result)))
               if args.RuleResult["face"] != nil {
                  logger.Info("-------------------face结果标签", args.RuleResult["face"].([]Arg))
                  logger.Info("-------------------face结果标签有几个", len(args.RuleResult["face"].([]Arg)))
               }
               //os.Exit(0)
            }
@@ -675,7 +675,7 @@
      logger.Info("这帧图像在任务下的一整条规则下(联动任务下就是跟本摄像机像相关的小规则)的判断结果为false")
      // 所以也要去结果数组里放值或更新
      for _, va := range timeEle.RuleResults {
         if args.CameraId != "" && va.CameraId == args.CameraId { // arg.CameraId 随便找一个数据
         if args.CameraId != "" && va.CameraId == args.CameraId {
            va.Result = strconv.FormatBool(isOk)
         }
      }
@@ -824,7 +824,7 @@
}
// 都过滤完条件之后看看是否要创建一个定时器元素 创建定时器的条件:是否有靠右行,个体静止等自带定时器含义的算法以及是否有持续时间
func duration(rule *protomsg.Rule, am *AreaMap) {
func duration(rule *protomsg.Rule, am *AreaMap, args *SdkDatas) {
   if rule.PolygonId == am.areaId { // 首先规则所对应的区域id要跟区域数据的id对的上  配置的算法要对的上
      if rule.SdkArgAlias == "duration" { //
         // 先看看定时器元素队列中是否有这个摄像机这个区域的定时器,如果有就不能再次创建了
@@ -838,7 +838,7 @@
         if flag {
            timeLength, _ := strconv.Atoi(rule.SdkArgValue)
            timeEle := TimeElement{N: timeLength, InitN: timeLength} // 扔进去一个定时器元素
            timeEle := TimeElement{N: timeLength, InitN: timeLength, AlarmFlag: false, CacheSdkData: *args} // 扔进去一个定时器元素
            //TimeEleList = make(map[string]timeElement)
            TimeEleList[am.taskId+" "+am.sdkId+" "+am.areaId] = &timeEle // 定时器元素以摄像机id拼接区域id为键
            logger.Info("创建了计数器并且计数器集合为:", TimeEleList)