panlei
2019-11-12 7cb7884e4bd7f27d811474d4e95f29eebac845cd
ruleserver/ruleToformula.go
@@ -36,7 +36,8 @@
      // 得到属于该摄像机的若干组任务的完整规则(跟每一条完整规则比较之后得出本张图像对于某个规则是否报警的结果。放进map,比如本帧图像的id,所碰撞成功的规则id)
      args.RuleResult = make(map[string]interface{})
      args.RuleResult["yolo"] = []structure.Result{}
      args.RuleResult["face"] = []structure.FaceResult{}
      args.RuleResult["face"] = []structure.TargetResult{}
      args.RuleResult["target"] = []structure.TargetResult{}
      //logger.Warn("传进去之前是什么德行:",args.RuleResult["yolo"])
      if taskGroup != nil && len(taskGroup.GroupRules) > 0 {
         // 先过独立,再过联动
@@ -76,7 +77,7 @@
   }
}
func CallMiddleware(args *structure.SdkDatas,rule protomsg.GroupRule) (bool, string, string){
func CallMiddleware(args *structure.SdkDatas,rule protomsg.GroupRule,lable *structure.Others,message *protomsg.SdkMessage) (bool, string, string){
   p,err :=  plugin.Open("./algorithm/middleware.so")
   if err != nil {
      panic(err)
@@ -85,7 +86,7 @@
   if err1 != nil {
      panic("没有找到中间件入口函数")
   }
   a,b,c := f.(func(args *structure.SdkDatas,rule protomsg.GroupRule)(bool, string, string))(args,rule)
   a,b,c := f.(func(args *structure.SdkDatas,rule protomsg.GroupRule,label *structure.Others,message *protomsg.SdkMessage)(bool, string, string))(args,rule,lable,message)
   return a,b,c
}
@@ -102,7 +103,7 @@
   sdkNames := ""
   polygonId := ""
   // 把一帧数据和一组规则发给算法部分,得出判断结果
   result,sdkNames,polygonId = CallMiddleware(args,*groupRule)
   result,sdkNames,polygonId = CallMiddleware(args,*groupRule,&label,message)
   if result {
      // 最后过持续时间等时间维度的条件   把时间规则位置调整到这个位置是为了缓存数据
@@ -177,7 +178,7 @@
            //logger.Info("-------------------yolo结果标签长度", len(args.RuleResult["yolo"].([]Result)))
         }
         if faceFlag {
            args.RuleResult["face"] = append(args.RuleResult["face"].([]structure.FaceResult), structure.FaceResult{structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, []structure.TargetInfo{}, polygonId, islink,label,}, faces})
            args.RuleResult["face"] = append(args.RuleResult["face"].([]structure.TargetResult), structure.TargetResult{structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, []structure.TargetInfo{}, polygonId, islink,label,}, faces})
            //logger.Info("-------------------face结果标签", len(args.RuleResult["face"].([]FaceResult)))
            labelTypes = append(labelTypes,1)
         }
@@ -192,9 +193,9 @@
                  }
               }
               if k == "face" {
                  tempMap[k] = []structure.FaceResult{}
                  for _, res := range result.([]structure.FaceResult) {
                     tempMap[k] = append(tempMap[k].([]structure.FaceResult), res)
                  tempMap[k] = []structure.TargetResult{}
                  for _, res := range result.([]structure.TargetResult) {
                     tempMap[k] = append(tempMap[k].([]structure.TargetResult), res)
                  }
               }
            }
@@ -305,9 +306,9 @@
                  }
               }
               if k == "face" {
                  tempMap[k] = []structure.FaceResult{}
                  for _, res := range result.([]structure.FaceResult) {
                     tempMap[k] = append(tempMap[k].([]structure.FaceResult), res)
                  tempMap[k] = []structure.TargetResult{}
                  for _, res := range result.([]structure.TargetResult) {
                     tempMap[k] = append(tempMap[k].([]structure.TargetResult), res)
                  }
               }
            }
@@ -351,9 +352,9 @@
                        args.RuleResult["yolo"].([]structure.Result)[i].Others.LinkCache = label.LinkCache
                     }
                  }
                  for i := 0; i < len(args.RuleResult["face"].([]structure.FaceResult)); i++ {
                     if args.RuleResult["face"].([]structure.FaceResult)[i].RuleGroupId == groupRule.GroupId { // 把联动数据追加上
                        args.RuleResult["face"].([]structure.FaceResult)[i].Others.LinkCache = label.LinkCache
                  for i := 0; i < len(args.RuleResult["face"].([]structure.TargetResult)); i++ {
                     if args.RuleResult["face"].([]structure.TargetResult)[i].RuleGroupId == groupRule.GroupId { // 把联动数据追加上
                        args.RuleResult["face"].([]structure.TargetResult)[i].Others.LinkCache = label.LinkCache
                     }
                  }
               }
@@ -371,9 +372,9 @@
               }
            }
            if val == 1 {
               if len(args.RuleResult["face"].([]structure.FaceResult)) >= 1 {
                  lens := len(args.RuleResult["face"].([]structure.FaceResult))-1
                  args.RuleResult["face"] = args.RuleResult["face"].([]structure.FaceResult)[0:lens]
               if len(args.RuleResult["face"].([]structure.TargetResult)) >= 1 {
                  lens := len(args.RuleResult["face"].([]structure.TargetResult))-1
                  args.RuleResult["face"] = args.RuleResult["face"].([]structure.TargetResult)[0:lens]
               }
            }
         }