panlei
2019-11-14 ad7cf53c446a71e65a3a914743f24ff041c8ac13
algorithm/static/static.go
@@ -16,7 +16,10 @@
      if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" || rule.SdkArgAlias == "" { // 判断的是相似值,占比,尺寸等过滤条件,如果再有,还可以再加
         return filterRule(rule, am)
      } else if rule.SdkArgAlias == "duration" {
         return CompareAndSave(rule,am,lable,args,message)
         lr := CompareAndSave(rule,am,lable,args,message)
         logger.Info("个体静止规则结果:",lr)
         return lr
      } else {
         return structure.LittleRuleResult{}
      }
@@ -95,6 +98,11 @@
}
// 判断一个区域内有没有静止的目标
func CompareAndSave(rule *protomsg.Rule, am *structure.AreaMap,lable *structure.Others,args *structure.SdkDatas,message *protomsg.SdkMessage) structure.LittleRuleResult {
   defer func() {
      if err := recover(); err != nil {
         logger.Error("个体静止规则有误", err)
      }
   }()
   logger.Info("走了个体静止核心算法")
   initN := 5
   if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a977" && rule.SdkArgAlias == "duration" {
@@ -104,7 +112,8 @@
         initN = init
      }
   }
   if len(structure.StaticMap[am.AreaId].Targets) == 0 { // 即第一帧数据(也不一定),还没有缓存
   if structure.StaticMap[am.AreaId] == nil || len(structure.StaticMap[am.AreaId].Targets) == 0 { // 即第一帧数据(也不一定),还没有缓存
      logger.Info("之前无缓存")
      objs := []*structure.Obj{}
      for _, tar := range am.FilterData {
         obj := &structure.Obj{Id: tar.Id, Location: tar.Location, N: initN,InitN:initN}
@@ -113,9 +122,14 @@
      structure.StaticMap[am.AreaId] = &structure.CameraArea{objs}
      return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "false", rule.Sort}
   } else {
      logger.Info("之前有缓存")
      flag := "false"
      // 以之前静止的对象为主判断是否静止
      tars := []*structure.Arg{}
      logger.Info("看一下静止区域内的目标:",am.AreaId)
      for _, tar := range structure.StaticMap[am.AreaId].Targets {
         logger.Info("具体目标:",tar.Location)
      }
      for _, tar := range structure.StaticMap[am.AreaId].Targets {
         singleResult,arg := SingleStatic(tar,am,lable,90)
         if singleResult {