---
panlei
2019-11-14 00306764cf332822a699fb0e9d7ef58798dbca15
algorithm/static/static.go
@@ -95,6 +95,7 @@
}
// 判断一个区域内有没有静止的目标
func CompareAndSave(rule *protomsg.Rule, am *structure.AreaMap,lable *structure.Others,args *structure.SdkDatas,message *protomsg.SdkMessage) structure.LittleRuleResult {
   logger.Info("走了个体静止核心算法")
   initN := 5
   if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a977" && rule.SdkArgAlias == "duration" {
      if init,err := strconv.Atoi(rule.SdkArgValue); err != nil {
@@ -161,18 +162,20 @@
// 判断一个目标是否静止了指定时间
func SingleStatic(person *structure.Obj, am *structure.AreaMap,lable *structure.Others, argValue float64) (bool,*structure.Arg){
   logger.Info("单个目标的判断:")
   flag := false
   var o *structure.Arg = nil
   for _, obj := range am.FilterData {
      if person.Id == obj.Id {
         coincidenceDegree := PgsInterPercent(Rect2Point(person.Location), obj.Location, 1, 1)
         logger.Info("判断目标的重合度",coincidenceDegree)
         o = obj
         if coincidenceDegree >= argValue {
            flag = true
         }
      }
   }
   if flag { // 有一个对象保持静止(id相等并且重合度高于阈值)
   if flag { // 当前检测对象保持静止(id相等并且重合度高于阈值)
      flagTime := TimerAlarm(lable,person,flag,am.AreaId)
      if flagTime == "10" || flagTime == "11" {
         return flag,o
@@ -188,7 +191,7 @@
// 判断是否符合定时器条件
func TimerAlarm(oth *structure.Others,person *structure.Obj, result bool,areaId string) (string) {
   var flagTime string //
   logger.Info("目标的定时器:")
   rw.Lock()
      if result { // 结果为真