| | |
| | | // 从算法模块儿拿来的对一帧图像各个算法提取的数据集合 |
| | | type SdkDatas struct { |
| | | CameraId string |
| | | TaskId string |
| | | Sdkdata []*SdkData |
| | | RuleResult map[string]interface{} // 过完规则后打的标签 face: []Arg, yolo: []Result, cacheData: SdkDatas, timeLabel: 0,1,2,3,4,5 |
| | | } |
| | |
| | | SdkDataFormat(args.CameraId, arg, cameraPolygons) |
| | | } |
| | | // 跑本摄像机的所有规则组 一组一组跑 |
| | | taskRuleList := GetRuleGroup(args.CameraId) // 本摄像机下所有任务组 |
| | | taskGroup := GetRuleGroup(args.CameraId, args.TaskId) // 本摄像机下所有任务组 |
| | | //logger.Println("看下摄像机下的任务组:",taskRuleList) |
| | | // 得到属于该摄像机的若干组任务的完整规则(跟每一条完整规则比较之后得出本张图像对于某个规则是否报警的结果。放进map,比如本帧图像的id,所碰撞成功的规则id) |
| | | args.RuleResult = make(map[string]interface{}) |
| | | args.RuleResult["yolo"] = []Result{} |
| | | args.RuleResult["face"] = []Arg{} |
| | | if len(taskRuleList) > 0 { |
| | | for _, taskRule := range taskRuleList { |
| | | for _, group := range taskGroup.GroupRules { |
| | | //logger.Println("------------------------------任务规则:",taskRule) |
| | | ruleList := taskRule.GroupRules // 获取的是task下面的任务组 |
| | | taskId := taskRule.TaskId |
| | | taskId := taskGroup.TaskId |
| | | //logger.Println("------------本组任务下的规则组的数量:",len(ruleList)) |
| | | for i := 0; i < len(ruleList); i++ { |
| | | temp := ruleList[i].Rules // temp为一组完整规则 在此需要判断规则是否是联动规则 |
| | | temp := group.Rules // temp为一组完整规则 在此需要判断规则是否是联动规则 |
| | | if len(temp) > 0 { |
| | | if ruleList[i].SetType == "linkTask" { |
| | | if group.SetType == "linkTask" { |
| | | // groupId中含有link则为联动任务 |
| | | LinkTask(args, ruleList[i], taskId,message) |
| | | LinkTask(args, group, taskId, message) |
| | | } else { |
| | | // 独立任务的处理 |
| | | RunRule(args, ruleList[i], taskId,message) |
| | | } |
| | | } |
| | | RunRule(args, group, taskId, message) |
| | | } |
| | | } |
| | | } |
| | |
| | | return false |
| | | } |
| | | } |
| | | |
| | | |
| | | func putFaceToResult(am *AreaMap) []Arg { |
| | | faces := []Arg{} |
| | |
| | | } |
| | | return LittleRuleResult{} |
| | | } |
| | | |
| | | |