| | |
| | | func SdkDataFormat(cameraId string, arg *SdkData, cameraPolygons []protomsg.CameraPolygon) { |
| | | logger.Info("==================================本sdkData中解出来的目标数据=======================================") |
| | | for _, photo := range arg.Photo { |
| | | logger.Info("--------看看解析出来的数据---", cameraId, arg.IpcId, photo.Rects, photo.Score) |
| | | logger.Info("--------解析出来的数据---", cameraId, arg.IpcId, photo.Rects, photo.Score) |
| | | } |
| | | for _, polygon := range cameraPolygons { |
| | | //logger.Println("++++++在这儿看一下区域啊:", polygon.Polygon) |
| | |
| | | } |
| | | logger.Info("----------------------------------------map是", m) |
| | | for key, val := range m { |
| | | logger.Info("_______________________________________对比库的返回值", key, val) |
| | | baseinfo, err1 := esutil.Dbpersoninfosbyid(key) |
| | | if err1 != nil { |
| | | logger.Error("查询底库人员信息出错", err1) |
| | |
| | | if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" { |
| | | for _, sdkData := range args.Sdkdata { |
| | | if sdkData.IpcId == "A8B73405-373D-4F23-CED2-A617EBD7EC55" { // 搜索到人脸检测的sdkdata 现在关于人脸的只有他一个sdk,全找他 |
| | | logger.Info("============================================第一关") |
| | | logger.Info("============================================进行人脸对比") |
| | | for _, areaMap := range sdkData.AreaMapList { |
| | | logger.Info("-------------人脸比对之前目标数量",len(areaMap.args)) |
| | | // 拿区域中每个人脸特征值去对比,填充其liker |
| | | if groupRule.Rules[j].PolygonId == areaMap.areaId { |
| | | for _, arg := range areaMap.args { |
| | |
| | | areaMap.filterData = areaMap.args |
| | | //logger.Info("=======第一次看args:",(areaMap.filterData)) |
| | | } |
| | | logger.Info("-------------------------------人脸对比之后的目标数量",len(areaMap.args)) |
| | | } |
| | | } |
| | | } |
| | |
| | | logger.Info("规则的ipcId与sdkData的IpcId:", ipcId, "===", sdkData.IpcId) |
| | | if ipcId == sdkData.IpcId { |
| | | logger.Info("当前走的规则的算法是--:", sdkName, "---") |
| | | logger.Info("========================有几个区域:",len(sdkData.AreaMapList)) |
| | | for _,areaMap := range sdkData.AreaMapList{ |
| | | logger.Info("检查一下区域的具体数据:",areaMap.areaJson) |
| | | } |
| | | for _, areaMap := range sdkData.AreaMapList { |
| | | ruleResult := filterRule(groupRule.Rules[j], areaMap) |
| | | if ruleResult.Result != "" { |
| | |
| | | if flag { |
| | | // 最后成功报警才把符合条件的人脸数据塞进结果标签里 |
| | | // 配了人脸的算法才把人脸的数据甩出来打标签 |
| | | logger.Info("------------------------------最后一关") |
| | | faces := []Arg{} |
| | | faceFlag := false |
| | | for j := 0; j < len(groupRule.Rules); j++ { |
| | |
| | | } |
| | | if sdkNames != "" { |
| | | args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkNames, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText, locations,polygonId}) |
| | | logger.Info("-------------------yolo结果标签", args.RuleResult["yolo"].([]Result)) |
| | | logger.Info("-------------------yolo结果标签长度", len(args.RuleResult["yolo"].([]Result))) |
| | | } |
| | | if args.RuleResult["face"] != nil { |
| | | logger.Info("-------------------face结果标签", args.RuleResult["face"].([]Arg)) |
| | | logger.Info("-------------------face结果标签", len(args.RuleResult["face"].([]Arg))) |
| | | } |
| | | return true |
| | | } else { |
| | |
| | | return LittleRuleResult{am.sdkName, rule.RuleWithPre + "" + flag, rule.Sort} |
| | | } |
| | | if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" { // 人脸检测 |
| | | logger.Info("------------------------------------------------------------------------------------------------------------------------------------终于等到你") |
| | | if rule.Operator == "==" || rule.Operator == ">=" || rule.Operator == "<=" || rule.Operator == "<" || rule.Operator == ">" || rule.Operator == "!=" { |
| | | // 如果是不规矩的连接符统统返回false 规则也只能判断人脸的相似度,所以不存在别的连接符 |
| | | if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 判断的是相似值,占比,尺寸等过滤条件,如果再有,还可以再加 |
| | | logger.Info("--------------------终于等到你的下文") |
| | | logger.Info("---------------------------终于等到你") |
| | | var args []*Arg |
| | | if rule.RuleWithPre == "&&" { |
| | | args = am.filterData |
| | |
| | | } |
| | | // 先清空过滤后的数据,再往里塞本次过滤后的数据 |
| | | am.filterData = am.filterData[0:0] |
| | | //logger.Info("-----------------------人脸过滤的args:", args) |
| | | logger.Info("-----------------------人脸过滤的args里的数量:", len(args)) |
| | | for _, arg := range args { |
| | | var formula string |
| | | if rule.SdkArgAlias == "score" { |