| | |
| | | args []*Arg // 区域内目标集合 |
| | | filterData []*Arg // 过滤后区域内目标集合 |
| | | time string // 当前时间(用以匹配时间规则) |
| | | isEffective bool // 规则中是否用到了此区域 |
| | | keepRight bool // 是否靠右行 |
| | | isStatic bool // 是否静止 |
| | | } |
| | |
| | | RuleText string // 文字版规则组 |
| | | Location []Rect // 目标的坐标 |
| | | AlarmPolygon string // 触发的报警框 |
| | | IsLink bool // 是否是联动任务 |
| | | Others |
| | | } |
| | | type Others struct { |
| | |
| | | } |
| | | } |
| | | //logger.Debug("------locations的内容:", locations) |
| | | var islink bool |
| | | if groupRule.SetType == "linlkTask" { |
| | | islink = true |
| | | } else { |
| | | islink = false |
| | | } |
| | | if sdkNames != "" { |
| | | args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, locations, polygonId, label}) |
| | | args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, locations, polygonId, islink,label,}) |
| | | //logger.Info("-------------------yolo结果标签长度", len(args.RuleResult["yolo"].([]Result))) |
| | | } |
| | | if faceFlag { |
| | | args.RuleResult["face"] = append(args.RuleResult["face"].([]FaceResult), FaceResult{Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, []Rect{}, polygonId, label}, faces}) |
| | | args.RuleResult["face"] = append(args.RuleResult["face"].([]FaceResult), FaceResult{Result{taskId, sdkNames, groupRule.GroupId, groupRule.DefenceState, groupRule.AlarmLevel, groupRule.GroupText, []Rect{}, polygonId, islink,label,}, faces}) |
| | | //logger.Info("-------------------face结果标签", len(args.RuleResult["face"].([]FaceResult))) |
| | | logger.Info("过完规则时查看人脸标签:") |
| | | if args.RuleResult["face"] != nil && len(args.RuleResult["face"].([]FaceResult)) > 0 { |
| | | for _, faceResult := range args.RuleResult["face"].([]FaceResult) { |
| | | for _,arg := range faceResult.Args { |
| | | logger.Info("人员分值是:",arg.Score,"liker的数量为",arg.Liker) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return true |
| | | } else { |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | //logger.Println("-----------------------------------------------听说你是空的?",faces) |
| | | return faces |
| | | } |
| | |
| | | // 把没有相似者的人脸从filterData中删除 |
| | | for index := 0; index < len(am.filterData); { |
| | | // 将达不到阈值的相似者从相似者数组中删除 |
| | | logger.Info("看看相似者人数:",len(am.filterData[index].Liker)) |
| | | if len(am.filterData[index].Liker) == 0 { |
| | | // Go 语言中切片删除元素的本质是:以被删除元素为分界点,将前后两个部分的内存重新连接起来。不用怀疑,数组删除元素就这么坑爹 |
| | | am.filterData = append(am.filterData[:index], am.filterData[index+1:]...) |