panlei
2019-07-02 0845ec988d33fc0109386265d0834398d8c69970
ruleserver/ruleToformula.go
@@ -249,15 +249,14 @@
      }
   }
   // 过完条件数据后把符合条件的人脸数据塞进结果标签里
   faces := []Arg{}
   for _, sdkData := range args.Sdkdata {
      for _, areaMap := range sdkData.AreaMapList {
         for j := 0; j < len(groupRule.Rules); j++ {
            putFaceToResult(groupRule.Rules[j], &areaMap, faces)
            args.RuleResult["face"] = putFaceToResult(groupRule.Rules[j], &areaMap)
         }
      }
   }
   args.RuleResult["face"] = faces
   // 再过其他数据 这步直接得到结果(真或假) 过目标数量
   for j := 0; j < len(groupRule.Rules); j++ {
      for _, sdkData := range args.Sdkdata {
@@ -331,14 +330,16 @@
            for j := 0; j < len(groupRule.Rules); j++ {
               for _, sdkData := range args.Sdkdata {
                  if groupRule.Rules[j].SdkId == sdkData.SdkId && sdkData.IsYolo && !strings.Contains(sdkName,sdkData.SdkName) { // 只记录yolo符合规则的sdk 同时要避免重复拼接
                     sdkName = sdkName + "," + sdkData.SdkName
                     sdkName = sdkData.SdkName + " "
                  }
               }
            }
            args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkName, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText})
            log.Println("-------------------yolo结果标签",args.RuleResult["yolo"].([]Result))
            if args.RuleResult["faces"] != nil {
               log.Println("-------------------face结果标签",args.RuleResult["faces"].([]Arg))
            if sdkName != "" {
               args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkName, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText})
               log.Println("-------------------yolo结果标签",args.RuleResult["yolo"].([]Result))
            }
            if args.RuleResult["face"] != nil {
               log.Println("-------------------face结果标签",args.RuleResult["face"].([]Arg))
               os.Exit(1)
            }
            return true
@@ -351,14 +352,18 @@
   }
}
func putFaceToResult(rule *protomsg.Rule, am *AreaMap, faces []Arg) {
func putFaceToResult(rule *protomsg.Rule, am *AreaMap) []Arg {
   faces := []Arg{}
   if rule.SdkId == am.sdkId {
      if len(am.filterData) > 0 {
         for _, data := range am.filterData {
            log.Println("---------------------------------------------------------------------有这个data",data)
            faces = append(faces, data)
         }
      }
   }
   log.Println("-----------------------------------------------听说你是空的?",faces)
   return faces
}
// 计算区域内的目标数量以及将相似度、占比、尺寸等打包