From 3e2c40a20764f62969f807688457d15a09a413e7 Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期四, 04 七月 2019 19:39:37 +0800 Subject: [PATCH] 在人脸提取中解析底库数据信息 --- ruleserver/ruleToformula.go | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 53 insertions(+), 7 deletions(-) diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go index ef89737..02d1dd0 100644 --- a/ruleserver/ruleToformula.go +++ b/ruleserver/ruleToformula.go @@ -4,7 +4,6 @@ "encoding/json" "fmt" "log" - "os" "ruleprocess/cache" "sort" "strconv" @@ -138,6 +137,7 @@ RuleGroupId string // 瑙勫垯缁刬d AlarmLevel int32 // 鎶ヨ绛夌骇 RuleText string // 鏂囧瓧鐗堣鍒欑粍 + Location []Rect } type LittleRuleResult struct { SdkName string // 璁板綍涓嬫缁撴灉鏄摢涓猻dk鐨勭粨鏋� @@ -217,7 +217,7 @@ if len(temp) > 0 { if ruleList[i].SetType == "linkTask" { // groupId涓惈鏈塴ink鍒欎负鑱斿姩浠诲姟 - //LinkTask(args, ruleList[i], taskId) + LinkTask(args, ruleList[i], taskId) } else { // 鐙珛浠诲姟鐨勫鐞� RunRule(args, ruleList[i], taskId) @@ -288,6 +288,19 @@ for _, va := range resultSplice { completeFormula = completeFormula + va.Result } + if strings.HasPrefix(completeFormula, "&&") || strings.HasPrefix(completeFormula, "||") || strings.HasPrefix(completeFormula, ">=") || strings.HasPrefix(completeFormula, "<=") || strings.HasPrefix(completeFormula, "==") || strings.HasPrefix(completeFormula, "!=") || strings.HasPrefix(completeFormula, ">") || strings.HasPrefix(completeFormula, "<") { + // 浠ヨ繖浜涘紑澶寸殑鍩烘湰鏄仈鍔ㄤ换鍔� + if strings.HasPrefix(completeFormula, "&&") || strings.HasPrefix(completeFormula, "||") || strings.HasPrefix(completeFormula, ">=") || strings.HasPrefix(completeFormula, "<=") || strings.HasPrefix(completeFormula, "==") || strings.HasPrefix(completeFormula, "!=") { + completeFormula = completeFormula[2 :] + } + if strings.HasPrefix(completeFormula, ">") || strings.HasPrefix(completeFormula, "<") { + completeFormula = completeFormula[1 :] + } + log.Println("-------------------鐪嬬湅鎷旀瘺鍚庣殑琛ㄨ揪寮忥細",completeFormula) + expression, _ := govaluate.NewEvaluableExpression(completeFormula) + result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋� + return result.(bool) + } if completeFormula != "" { log.Println("缁撴灉鍏紡-----------锛�", completeFormula) expression, _ := govaluate.NewEvaluableExpression(completeFormula) @@ -303,6 +316,7 @@ timeEle.N = timeEle.InitN // 閲嶇疆瀹氭椂鍣� } } + log.Println("--------------------璧拌繖閲屼簡鍚�---------------") return false } else { // 鏈�鍚庢垚鍔熸姤璀︽墠鎶婄鍚堟潯浠剁殑浜鸿劯鏁版嵁濉炶繘缁撴灉鏍囩閲� @@ -346,7 +360,26 @@ } } if sdkName != "" { - args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkName, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText}) + // 鎶婁粬浠殑浣嶇疆鏁版嵁涔熶紶涓嬪幓 + 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)...) + } + } + } + //// 閰嶄簡浜鸿劯鐨勭畻娉曟墠鎶婁汉鑴哥殑鏁版嵁鐢╁嚭鏉ユ墦鏍囩 + //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 + //} + args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkName, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText,locations}) log.Println("-------------------yolo缁撴灉鏍囩", args.RuleResult["yolo"].([]Result)) } if args.RuleResult["face"] != nil { @@ -373,6 +406,19 @@ } //log.Println("-----------------------------------------------鍚浣犳槸绌虹殑锛�",faces) return faces +} + +func putYolosToResult(rule *protomsg.Rule, am *AreaMap) []Rect { + locations := []Rect{} + if rule.SdkId == am.sdkId && rule.SdkId != "812b674b-2375-4589-919a-5c1c3278a97e" && rule.SdkId != "812b674b-2375-4589-919a-5c1c3278a971" { + if len(am.filterData) > 0 { + for _, data := range am.filterData { + locations = append(locations, data.Location) + } + } + } + //log.Println("-----------------------------------------------鍚浣犳槸绌虹殑锛�",faces) + return locations } // 璁$畻鍖哄煙鍐呯殑鐩爣鏁伴噺浠ュ強灏嗙浉浼煎害銆佸崰姣斻�佸昂瀵哥瓑鎵撳寘 @@ -485,13 +531,13 @@ for _, va := range timeEle.RuleResults { if va.CameraId == args.CameraId { va.Result = strconv.FormatBool(isOk) - log.Println("杩欎釜鎽勫儚鏈�--",args.CameraId,"--琚祴浜堜簡result",va.Result) + log.Println("杩欎釜鎽勫儚鏈�--", args.CameraId, "--琚祴浜堜簡result", va.Result) } } // 鍒ゆ柇缁撴灉鏁扮粍鏄惁瀹屾弧(鍗宠璧嬪�煎畬姣�)鍙緱鍑烘姤璀︾粨鏋� var isPerfect = true for _, va := range timeEle.RuleResults { - log.Println("---------------------鐬呯瀰褰撳墠鏁扮粍________________锛�",*va) + log.Println("---------------------鐬呯瀰褰撳墠鏁扮粍________________锛�", *va) if va.Result == "" && va.RuleWithPre != "||" { isPerfect = false } @@ -519,13 +565,13 @@ } } if sdkName != "" { - args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkName, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText}) + args.RuleResult["yolo"] = append(args.RuleResult["yolo"].([]Result), Result{taskId, sdkName, groupRule.GroupId, groupRule.AlarmLevel, groupRule.GroupText,[]Rect{}}) log.Println("-------------------yolo缁撴灉鏍囩", args.RuleResult["yolo"].([]Result)) } if args.RuleResult["face"] != nil { log.Println("-------------------face缁撴灉鏍囩", args.RuleResult["face"].([]Arg)) } - os.Exit(0) + //os.Exit(0) } } } else { -- Gitblit v1.8.0