| | |
| | | func GetPolygons(cameraId string) []protomsg.CameraPolygon { |
| | | var cameraPolygons []protomsg.CameraPolygon |
| | | cameraPolygons = cache.GetPolygonsByCameraId(cameraId) |
| | | |
| | | logger.Debug("------=======查看下全部区域:",cameraPolygons) |
| | | return cameraPolygons |
| | | } |
| | | |
| | |
| | | if err1 != nil { |
| | | logger.Error("查询底库人员信息出错", err1) |
| | | } |
| | | baseinfo.CompareScore = val |
| | | baseinfo.CompareScore = Retain(val) |
| | | arg.Liker = append(arg.Liker, &baseinfo) |
| | | } |
| | | //logger.Info("------------------第一次看args:",*arg) |
| | | } |
| | | // 保留四位小数 |
| | | func Retain(f float32)(float32) { |
| | | s:= strconv.FormatFloat(float64(f), 'f', 4, 64) |
| | | v, err := strconv.ParseFloat(s, 32) |
| | | if err != nil { |
| | | logger.Error("保留四位小数转换错误") |
| | | } |
| | | return float32(v) |
| | | } |
| | | func Compare(args *SdkDatas, groupRule *protomsg.GroupRule) { |
| | | compareFlag := 0 |
| | |
| | | } |
| | | } |
| | | // 为了测试作下弊,直接让其比对全部底库 |
| | | compareFlag = 1 |
| | | //compareFlag = 1 |
| | | if compareFlag == 0 { |
| | | logger.Info("没有配置对比底库参数") |
| | | return |
| | |
| | | logger.Info("-------------人脸比对之前目标数量",len(areaMap.args)) |
| | | // 拿区域中每个人脸特征值去对比,填充其liker |
| | | if groupRule.Rules[j].PolygonId == areaMap.areaId { |
| | | logger.Info("--------------看看compareFlag的值:",compareFlag) |
| | | for _, arg := range areaMap.args { |
| | | if compareFlag == 1 { |
| | | arg.fillLiker() |
| | | } |
| | | if compareFlag == 2 { |
| | | array := strings.Split(tableIds, ",") |
| | | logger.Info("--------------------------看看对比底库的值;",array) |
| | | for i := 0; i < len(array)-1; i++ { |
| | | arg.fillLiker() |
| | | } |
| | |
| | | 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 { |
| | |
| | | // 将字符串格式的坐标序列化为Point格式 |
| | | func Json2points(areaPoints string) []Point { |
| | | var pts []Point |
| | | if areaPoints == "" { |
| | | if areaPoints == "[]" { |
| | | logger.Error("=====================此区域为全部区域") |
| | | pts = append(pts, Point{0, 0}) |
| | | pts = append(pts, Point{0, 540}) |
| | | pts = append(pts, Point{960, 540}) |
| | |
| | | //logger.Info("规则的算法id和区域的算法id:", rule.SdkId, "===", am.sdkId) |
| | | if rule.PolygonId == am.areaId { // 算法和区域都得对的上 |
| | | |
| | | if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && rule.SdkArgAlias != "time_rule" { |
| | | // 只需要过滤阈值,过滤完后数组长度大于0即为报警 |
| | | if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && rule.SdkArgAlias != "time_rule" && rule.SdkArgAlias != "compareBase"{ |
| | | argValue, err := strconv.ParseFloat(rule.SdkArgValue, 64) |
| | | if err != nil { |
| | | logger.Error("规则配置的阈值非法") |