From 23e956b0a7e0f79f34d2113b0fa1154bef3e6643 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期四, 04 七月 2019 14:47:40 +0800
Subject: [PATCH] 把yolo的目标位置数据也传下去用于标出那个目标框
---
util/simpleCV.go | 20 +--------
ruleserver/ruleToformula.go | 55 +++++++++++++++++++++------
2 files changed, 46 insertions(+), 29 deletions(-)
diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index 6bc1fde..1c26134 100644
--- a/ruleserver/ruleToformula.go
+++ b/ruleserver/ruleToformula.go
@@ -138,6 +138,7 @@
RuleGroupId string // 瑙勫垯缁刬d
AlarmLevel int32 // 鎶ヨ绛夌骇
RuleText string // 鏂囧瓧鐗堣鍒欑粍
+ Location []Rect
}
type LittleRuleResult struct {
SdkName string // 璁板綍涓嬫缁撴灉鏄摢涓猻dk鐨勭粨鏋�
@@ -288,18 +289,16 @@
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, "!=") || 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:len(completeFormula)-1]
+ if strings.HasPrefix(completeFormula, "&&") || strings.HasPrefix(completeFormula, "||") || strings.HasPrefix(completeFormula, ">=") || strings.HasPrefix(completeFormula, "<=") || strings.HasPrefix(completeFormula, "==") || strings.HasPrefix(completeFormula, "!=") {
+ completeFormula = completeFormula[2 : len(completeFormula)-1]
}
- if strings.HasPrefix(completeFormula,">") || strings.HasPrefix(completeFormula,"<") {
- completeFormula = completeFormula[1:len(completeFormula)-1]
+ if strings.HasPrefix(completeFormula, ">") || strings.HasPrefix(completeFormula, "<") {
+ completeFormula = completeFormula[1 : len(completeFormula)-1]
}
+ log.Println("-------------------鐪嬬湅鎷旀瘺鍚庣殑琛ㄨ揪寮忥細",completeFormula)
expression, _ := govaluate.NewEvaluableExpression(completeFormula)
- if strings.HasPrefix(completeFormula, "&&") || strings.HasPrefix(completeFormula, "||") {
- panic("瑙勫垯鏈夎锛屽緱鍒扮殑鏁板鍏紡涓嶅彲瑙f瀽")
- }
result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
return result.(bool)
}
@@ -362,7 +361,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 {
@@ -389,6 +407,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
}
// 璁$畻鍖哄煙鍐呯殑鐩爣鏁伴噺浠ュ強灏嗙浉浼煎害銆佸崰姣斻�佸昂瀵哥瓑鎵撳寘
@@ -501,13 +532,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
}
@@ -535,7 +566,7 @@
}
}
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 {
diff --git a/util/simpleCV.go b/util/simpleCV.go
index c0d6558..3a0bd38 100644
--- a/util/simpleCV.go
+++ b/util/simpleCV.go
@@ -162,27 +162,12 @@
}
func DrawPolygonOnImage(cameraId string, img protomsg.Image) (maps map[string]interface{}, err0 error) {
- // draw the rook
- //ddd, err := RetrieveROM("/home/user/workspace/ruleprocess/util/105.jpg")
- //if err != nil {
- // fmt.Println("瑙g爜鏈夎",err)
- //}
- //bbb := bytes.NewBuffer(ddd) // 蹇呴』鍔犱竴涓猙uffer 涓嶇劧娌℃湁read鏂规硶灏变細鎶ラ敊
- //rook,_ := gocv.IMDecode(bbb.Bytes(),gocv.IMReadColor)
+
rook, _ := gocv.NewMatFromBytes(int(img.Height), int(img.Width), gocv.MatTypeCV8UC3, img.Data)
//rook := gocv.IMRead("/home/user/workspace/ruleprocess/util/105.jpg",gocv.IMReadColor)
defer rook.Close()
red := color.RGBA{255, 0, 0, 0}
- //points := [][]image.Point{
- // {
- // image.Pt(100., 100),
- // image.Pt(100., 400),
- // image.Pt(400, 400),
- // image.Pt(400, 100),
- // },
- //}
- //gocv.FillPoly(&rook, points, green)
// 鏌ュ埌鎽勫儚鏈烘墍鏈夌殑鍖哄煙骞剁敾妗�
var cameraPolygons []protomsg.CameraPolygon
cameraPolygons = cache.GetPolygonsByCameraId(cameraId)
@@ -197,7 +182,8 @@
}
}
-
+ // 鎶婄洰鏍囨鍑烘潵
+ //gocv.Rectangle()
//return nil,nil
// 涓婁紶
fdata, _ := gocv.IMEncode(".jpg", rook)
--
Gitblit v1.8.0