| | |
| | | // 从算法模块儿拿来的对一帧图像各个算法提取的数据集合 |
| | | type SdkDatas struct { |
| | | CameraId string |
| | | Sdkdata []SdkData |
| | | Sdkdata []*SdkData |
| | | RuleResult map[string]interface{} // 过完规则后打的标签 face: []Arg yolo: []Result |
| | | } |
| | | |
| | |
| | | cameraPolygons := GetPolygons(args.CameraId) |
| | | // 把所有的sdk提取的数据都按所属摄像机的区域归置 |
| | | for _, arg := range args.Sdkdata { |
| | | SdkDataFormat(args.CameraId, &arg, cameraPolygons) |
| | | SdkDataFormat(args.CameraId, arg, cameraPolygons) |
| | | } |
| | | // 跑本摄像机的所有规则组 一组一组跑 |
| | | taskRuleList := GetRuleGroup(args.CameraId) // 本摄像机下所有任务组 |
| | |
| | | func RunRule(args *SdkDatas, groupRule *protomsg.GroupRule, taskId string) bool { |
| | | resultSplice := []*LittleRuleResult{} |
| | | // 先过完条件规则 |
| | | log.Println("---------------------看下这个组规则:", groupRule.Rules) |
| | | for j := 0; j < len(groupRule.Rules); j++ { |
| | | for _, sdkData := range args.Sdkdata { |
| | | if sdkData.SdkId == "812b674b-2375-4589-919a-5c1c3278a975" { |
| | |
| | | } |
| | | } |
| | | if flag { |
| | | fmt.Println("本帧数据符合规则") |
| | | fmt.Println("----------------------------终于走完万里长征") |
| | | // 如果成功了我应该找到规则中涉及到的sdk,记录下他们的sdkname |
| | | sdkName := "" |
| | | for j := 0; j < len(groupRule.Rules); j++ { |
| | |
| | | } |
| | | // 过完规则后打个标签,告诉调用者本帧数据针对哪个任务哪组规则报警了 后加:可能还不够,还需要区分触发报警的对象,后面往es数据库插数据时要用 |
| | | args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkName, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText}) |
| | | log.Println("-------------------结果标签",args.RuleResult["yolo"].([]Result)) |
| | | return true |
| | | } else { |
| | | return false |