panlei
2019-07-10 c0d0a8df1bbe1cf0cb663d9a2732f5575572c4d7
重要更新,塞符合条件的人脸标签、
2个文件已修改
72 ■■■■■ 已修改文件
insertdata/insertDataToEs.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruleserver/ruleToformula.go 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
insertdata/insertDataToEs.go
@@ -353,7 +353,7 @@
            logger.Error("往ES插入数据失败", err)
        } else {
            logger.Warn("__________________________________________往ES插入yolo数据成功")
            os.Exit(1)
            //os.Exit(1)
        }
    }
}
ruleserver/ruleToformula.go
@@ -185,8 +185,8 @@
// 把sdk从数据帧上提取的按照区域分类归置
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)
    for _, photo := range arg.Photo {
        logger.Info("--------看看解析出来的数据---", cameraId, arg.IpcId, photo.Rects, photo.Score)
    }
    for _, polygon := range cameraPolygons {
        //logger.Println("++++++在这儿看一下区域啊:", polygon.Polygon)
@@ -258,7 +258,7 @@
    }
    for j := 0; j < len(groupRule.Rules); j++ {
        // 只有是人脸对比并且配置的参数是对比底库才走(若配的对比阈值则不走)
        if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972"{
        if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" {
            for _, sdkData := range args.Sdkdata {
                if sdkData.IpcId == "812b674b-2375-4589-919a-5c1c3278a97e" { // 搜索到人脸检测的sdkdata 现在关于人脸的只有他一个sdk,全找他
                    for _, areaMap := range sdkData.AreaMapList {
@@ -273,9 +273,9 @@
                                        logger.Error("getBaseInfo解压错误", err1)
                                    }
                                    for key, val := range m {
                                        baseinfo,err1 := esutil.Dbpersoninfosbyid(key)
                                        baseinfo, err1 := esutil.Dbpersoninfosbyid(key)
                                        if err1 != nil {
                                            logger.Error("查询底库人员信息出错",err1)
                                            logger.Error("查询底库人员信息出错", err1)
                                        }
                                        baseinfo.CompareScore = val
                                        arg.Liker = append(arg.Liker, &baseinfo)
@@ -293,7 +293,7 @@
                                        for key, val := range m {
                                            baseinfo, err1 := esutil.Dbpersoninfosbyid(key)
                                            if err1 != nil {
                                                logger.Error("查询底库人员信息出错",err1)
                                                logger.Error("查询底库人员信息出错", err1)
                                            }
                                            baseinfo.CompareScore = val
                                            arg.Liker = append(arg.Liker, &baseinfo)
@@ -449,21 +449,21 @@
        } else {
            // 最后成功报警才把符合条件的人脸数据塞进结果标签里
            faces := []Arg{}
            faceFlag := false
            for j := 0; j < len(groupRule.Rules); j++ {
                if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" || groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" {
                    faceFlag = true
                }
            }
            for _, sdkData := range args.Sdkdata {
                for _, areaMap := range sdkData.AreaMapList {
                    for j := 0; j < len(groupRule.Rules); j++ {
                        faces = append(faces, putFaceToResult(groupRule.Rules[j], &areaMap)...)
                if sdkData.IpcId == "A8B73405-373D-4F23-CED2-A617EBD7EC55" && faceFlag { // sdkData里有人脸数据且配置了算法才把符合条件的数据塞进标签里去
                    for _, areaMap := range sdkData.AreaMapList {
                        faces = append(faces, putFaceToResult(&areaMap)...)
                    }
                }
            }
            // 配了人脸的算法才把人脸的数据甩出来打标签
            flag11 := false
            for j := 0; j < len(groupRule.Rules); j++ {
                if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" || groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" {
                    flag11 = true
                }
            }
            if flag11 {
            if faceFlag {
                args.RuleResult["face"] = faces
            }
            // 去看池子里是否有与本帧数据有关的定时器,如果有,看此时是否走到0,没有此定时器或有定时器走到0的话返回成功报警
@@ -481,22 +481,12 @@
                // 把他们的位置数据也传下去
                locations := []Rect{}
                for _, sdkData := range args.Sdkdata {
                    for _, areaMap := range sdkData.AreaMapList {
                        for j := 0; j < len(groupRule.Rules); j++ {
                            locations = append(locations, putYolosToResult(groupRule.Rules[j], &areaMap)...)
                    if sdkData.IpcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && sdkNames != "" { // 把yolo数据的各个目标的坐标输出方便后面画框
                        for _, areaMap := range sdkData.AreaMapList {
                            locations = append(locations, putYolosToResult(&areaMap)...)
                        }
                    }
                }
                //// 配了人脸的算法才把人脸的数据甩出来打标签
                //flag11 := false
                //for j := 0; j < len(groupRule.Rules); j++ {
                //    if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" || groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a971" {
                //        flag11 = true
                //    }
                //}
                //if flag11 {
                //    args.RuleResult["face"] = faces
                //}
                if sdkNames != "" {
                    args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkNames, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText, locations})
                    logger.Info("-------------------yolo结果标签", args.RuleResult["yolo"].([]Result))
@@ -514,26 +504,23 @@
    }
}
func putFaceToResult(rule *protomsg.Rule, am *AreaMap) []Arg {
func putFaceToResult(am *AreaMap) []Arg {
    faces := []Arg{}
    if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" || rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a972" {
        if len(am.filterData) > 0 {
            for _, data := range am.filterData {
                faces = append(faces, data)
            }
    if len(am.filterData) > 0 {
        for _, data := range am.filterData {
            faces = append(faces, data)
        }
    }
    //logger.Println("-----------------------------------------------听说你是空的?",faces)
    return faces
}
func putYolosToResult(rule *protomsg.Rule, am *AreaMap) []Rect {
func putYolosToResult(am *AreaMap) []Rect {
    locations := []Rect{}
    if rule.SdkId != "812b674b-2375-4589-919a-5c1c3278a97e" && rule.SdkId != "812b674b-2375-4589-919a-5c1c3278a972" {
        if len(am.filterData) > 0 {
            for _, data := range am.filterData {
                locations = append(locations, data.Location)
            }
    if len(am.filterData) > 0 {
        for _, data := range am.filterData {
            locations = append(locations, data.Location)
        }
    }
    //logger.Println("-----------------------------------------------听说你是空的?",faces)
@@ -752,6 +739,7 @@
                        }
                        // 先清空过滤后的数据,再往里塞本次过滤后的数据
                        am.filterData = am.filterData[0:0]
                        logger.Info("-----------------------人脸过滤的args:", args)
                        for _, arg := range args {
                            var formula string
                            if rule.SdkArgAlias == "score" {