| | |
| | | logger.Info("之前无缓存") |
| | | objs := []*structure.Obj{} |
| | | for _, tar := range am.FilterData { |
| | | obj := &structure.Obj{Id: tar.Id, Location: tar.Location, N: initN,InitN:initN} |
| | | obj := &structure.Obj{Id: tar.Id, Location: tar.Location, N: initN,InitN:initN,CacheSdkData:structure.ResultMsg{message, nil}} |
| | | objs = append(objs, obj) |
| | | } |
| | | structure.StaticMap[am.AreaId] = &structure.CameraArea{objs} |
| | |
| | | } |
| | | } |
| | | if flag { // 当前检测对象保持静止(id相等并且重合度高于阈值) |
| | | flagTime := TimerAlarm(lable,person,flag,am.AreaId) |
| | | flagTime := TimerAlarm(o,person,flag,am.AreaId) |
| | | if flagTime == "10" || flagTime == "11" { |
| | | return flag,o |
| | | } else { |
| | | return false,o |
| | | } |
| | | } else { |
| | | TimerAlarm(lable,person,flag,am.AreaId) |
| | | TimerAlarm(o,person,flag,am.AreaId) |
| | | return flag,o |
| | | } |
| | | } |
| | | var rw sync.RWMutex |
| | | // 判断是否符合定时器条件 |
| | | func TimerAlarm(oth *structure.Others,person *structure.Obj, result bool,areaId string) (string) { |
| | | func TimerAlarm(o *structure.Arg,person *structure.Obj, result bool,areaId string) (string) { |
| | | var flagTime string // |
| | | logger.Info("目标的定时器:") |
| | | rw.Lock() |
| | |
| | | if tar.N == 0 && tar.AlarmFlag { |
| | | logger.Debug("-------------------------符合持续时间规则但并不是首次,不报警") |
| | | flagTime = "11" |
| | | oth.TimeLabel = flagTime |
| | | } |
| | | if tar.N == 0 && !tar.AlarmFlag { // 这组规则的定时器要全部等于0 暂且认为一组规则只有一个定时器 |
| | | logger.Debug("———————————-------------首次符合持续时间规则并报警") |
| | | flagTime = "10" |
| | | tar.AlarmFlag = true |
| | | oth.CacheData = []structure.ResultMsg{} |
| | | oth.CacheData = append(oth.CacheData,tar.CacheSdkData) |
| | | oth.TimeLabel = flagTime |
| | | o.CacheData = tar.CacheSdkData |
| | | } |
| | | if tar.N != 0 { |
| | | flagTime = "00" |
| | |
| | | if tar.BufferFlag == 0 { |
| | | logger.Debug("------------------------------杀死计数器,报警此帧状态改变的数据,此时的计数器的值为", tar.N) |
| | | flagTime = "12" |
| | | oth.TimeLabel = flagTime |
| | | structure.StaticMap[areaId].Targets = append(structure.StaticMap[areaId].Targets[:index],structure.StaticMap[areaId].Targets[index+1:]...) |
| | | } else { |
| | | if tar.BufferFlag > 0 { |
| | |
| | | for _, areaMap := range sdkData.AreaMapList { |
| | | targets = append(targets,areaMap.AlarmObj...) |
| | | for _,obj := range areaMap.AlarmObj { |
| | | logger.Info("个体静止的目标",obj.Id,obj.Location) |
| | | logger.Info("个体静止的目标",obj.Id,obj.Location,obj.CacheData) |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | logger.Debug("------locations的内容:", yolos) |
| | | // 处理目标定时数据 |
| | | //targets := []*structure.Arg{} |
| | | //for _, sdkData := range args.Sdkdata { |
| | | // if sdkData.IpcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && sdkNames != "" { // 把yolo数据的各个目标的坐标输出方便后面画框 |
| | | // for _, areaMap := range sdkData.AreaMapList { |
| | | // if areaMap.IsEffective { |
| | | // yolos = append(yolos, putTargetsToResult(areaMap)...) |
| | | // } |
| | | // } |
| | | // } |
| | | //} |
| | | var islink bool |
| | | if groupRule.SetType == "linkTask" { |
| | | islink = true |
| | |
| | | //logger.Info("-------------------face结果标签", len(args.RuleResult["face"].([]FaceResult))) |
| | | labelTypes = append(labelTypes,1) |
| | | } |
| | | //if len(targets) > 0 { |
| | | // args.RuleResult["target"] = append(args.RuleResult["target"].([]structure.Result), structure.Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, targets, polygonId, islink,label}) |
| | | // //logger.Info("-------------------目标持续结果标签", len(args.RuleResult["face"].([]FaceResult))) |
| | | // //labelTypes = append(labelTypes,2) |
| | | //} |
| | | // 给持续时间的第一张赋予缓存数据(遍历复制) |
| | | if cacheId != "" { // 有这帧数据的缓存 |
| | | tempMap := make(map[string]interface{}) |
| | |
| | | //logger.Println("-----------------------------------------------听说你是空的?",faces) |
| | | return locations |
| | | } |
| | | |
| | | func putTargetsToResult(am *structure.AreaMap) []*structure.Arg { |
| | | locations := []*structure.Arg{} |
| | | if len(am.AlarmObj) > 0 { |
| | | locations = am.AlarmObj |
| | | } |
| | | //logger.Println("-----------------------------------------------听说你是空的?",faces) |
| | | return locations |
| | | } |
| | | // 联动任务的处理 |
| | | func LinkTask(args *structure.SdkDatas, groupRule *protomsg.GroupRule, taskId string, message *protomsg.SdkMessage, label structure.Others) { |
| | | // new一个定时器,如果以此groupId为标志的定时器不存在的话 |