panlei
2019-07-11 95652c49ee7c0a4a9b167c6bcbe585ebd58ab2e5
ruleserver/ruleToformula.go
@@ -89,8 +89,8 @@
   triggerLine   string
   directionLine string
   targetNum     int    // 区域内目标数量
   args          []Arg  // 区域内目标集合
   filterData    []Arg  // 过滤后区域内目标集合
   args          []*Arg  // 区域内目标集合
   filterData    []*Arg  // 过滤后区域内目标集合
   time          string // 当前时间(用以匹配时间规则)
   keepRight     bool   // 是否靠右行
   isStatic      bool   // 是否静止
@@ -115,7 +115,7 @@
   IsStatic    bool       // 是否静止
   ImageWidth  int        // 摄像机拍摄的图像宽 像素
   ImageHeight int        // 摄像机拍摄的图像高 像素
   AreaMapList []AreaMap  // 本sdk提取的数据按照区域划分后的数据集合
   AreaMapList []*AreaMap  // 本sdk提取的数据按照区域划分后的数据集合
}
// 从算法模块儿拿来的对一帧图像各个算法提取的数据集合
@@ -180,7 +180,7 @@
      areaMap := AreaMap{cameraId: cameraId, areaId: polygon.Id, areaJson: polygon.Polygon, triggerLine: polygon.TriggerLine, directionLine: polygon.DirectionLine}
      // 为每个摄像机区域填充数据
      areaMap.CountAreaObjs(arg)
      arg.AreaMapList = append(arg.AreaMapList, areaMap)
      arg.AreaMapList = append(arg.AreaMapList, &areaMap)
   }
}
@@ -295,7 +295,8 @@
                        }
                        logger.Info("-------------------成功给liker赋值,长度为:", len(arg.Liker))
                     }
                     //logger.Info("=======第一次看args:",areaMap.args)
                     areaMap.filterData = areaMap.args
                     logger.Info("=======第一次看args:",areaMap.filterData)
                  }
               }
            }
@@ -327,7 +328,7 @@
         if ipcId == sdkData.IpcId {
            logger.Info("当前走的规则的算法是--:", sdkName, "---")
            for _, areaMap := range sdkData.AreaMapList {
               ruleResult := filterRule(groupRule.Rules[j], &areaMap)
               ruleResult := filterRule(groupRule.Rules[j], areaMap)
               if ruleResult.Result != "" {
                  logger.Info("条件规则结果:", ruleResult.Result)
                  // 如果此结果为真且当前过的是yolo算法,应记下此规则所对应的sdkName,另外,还要去重
@@ -353,7 +354,7 @@
         sdkName := sdk.SdkName
         if ipcId == sdkData.IpcId {
            for _, areaMap := range sdkData.AreaMapList {
               ruleResult := transferParameters(groupRule.Rules[j], &areaMap)
               ruleResult := transferParameters(groupRule.Rules[j], areaMap)
               if ruleResult.Result != "" {
                  logger.Info("数量规则结果:", ruleResult.Result)
                  if ruleResult.Result == "true" && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) {
@@ -376,7 +377,7 @@
         sdkName := sdk.SdkName
         if ipcId == sdkData.IpcId {
            for _, areaMap := range sdkData.AreaMapList {
               ruleResult := timeRuleResult(groupRule.Rules[j], &areaMap)
               ruleResult := timeRuleResult(groupRule.Rules[j], areaMap)
               if ruleResult.Result != "" {
                  logger.Info("时间规则结果:", ruleResult.Result)
                  if ruleResult.Result == "true" && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) {
@@ -399,7 +400,7 @@
         if ipcId == sdkData.IpcId {
            for _, areaMap := range sdkData.AreaMapList {
               // 去开启一个定时器
               duration(groupRule.Rules[j], groupRule.GroupId, &areaMap, args)
               duration(groupRule.Rules[j], groupRule.GroupId, areaMap, args)
            }
         }
      }
@@ -466,7 +467,7 @@
            for _, sdkData := range args.Sdkdata {
               if sdkData.IpcId == "A8B73405-373D-4F23-CED2-A617EBD7EC55" && faceFlag { // sdkData里有人脸数据且配置了算法才把符合条件的数据塞进标签里去
                  for _, areaMap := range sdkData.AreaMapList {
                     faces = append(faces, putFaceToResult(&areaMap)...)
                     faces = append(faces, putFaceToResult(areaMap)...)
                  }
               }
            }
@@ -479,7 +480,7 @@
            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)...)
                     locations = append(locations, putYolosToResult(areaMap)...)
                  }
               }
            }
@@ -521,7 +522,7 @@
   faces := []Arg{}
   if len(am.filterData) > 0 {
      for _, data := range am.filterData {
         faces = append(faces, data)
         faces = append(faces, *data)
      }
   }
@@ -558,8 +559,8 @@
         a.targetNum++
         arg1 := Arg{obj.Score, PgsInterPercent(areaPoints, obj.Rects, widthScale, heigthScale), float64(obj.Rects.Width * obj.Rects.Height), obj.IsYolo, obj.Rects, obj.Feature, obj.ThftRes, []*protomsg.Baseinfo{}}
         //logger.Println("放进去的arg:-------", arg1)
         a.args = append(a.args, arg1)
         a.filterData = append(a.filterData, arg1)
         a.args = append(a.args, &arg1)
         a.filterData = append(a.filterData, &arg1)
      }
   }
   a.time = time.Unix(time.Now().Unix(), 0).String()[11:16]
@@ -727,7 +728,7 @@
               // 如果是不规矩的连接符统统返回false 规则也只能判断人脸的相似度,所以不存在别的连接符
               if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 判断的是相似值,占比,尺寸等过滤条件,如果再有,还可以再加
                  logger.Info("--------------------终于等到你的下文")
                  var args []Arg
                  var args []*Arg
                  if rule.RuleWithPre == "&&" {
                     args = am.filterData
                  } else {
@@ -776,7 +777,7 @@
      if rule.PolygonId == am.areaId { // 首先这条规则得是这个算法的规则,其次规则所对应的区域id要跟区域数据的id对的上
         if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 判断的是相似值,占比,尺寸等过滤条件,如果再有,还可以再加
            logger.Info("----------当前条件规则:---------", rule)
            var args []Arg
            var args []*Arg
            if rule.RuleWithPre == "&&" {
               args = am.filterData
            } else {