From 1d9804998f955e7d713d24ae719c757c0be73993 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期三, 13 十一月 2019 20:05:57 +0800
Subject: [PATCH] 个体静止开始测试

---
 algorithm/middleware/middleware.go |   12 +++++++-----
 ruleserver/ruleToformula.go        |   18 +++++++++++++-----
 algorithm/static/static.go         |   17 ++++++++++++-----
 ruleserver/readyDataForRule.go     |    4 +---
 structure/rule.go                  |    4 ++--
 5 files changed, 35 insertions(+), 20 deletions(-)

diff --git a/algorithm/middleware/middleware.go b/algorithm/middleware/middleware.go
index 266ceea..e5136f7 100644
--- a/algorithm/middleware/middleware.go
+++ b/algorithm/middleware/middleware.go
@@ -14,7 +14,7 @@
 	"time"
 )
 
-func Entrance (args *structure.SdkDatas,groupRule protomsg.GroupRule,lable *structure.Others,message *protomsg.SdkMessage) (bool,[]*structure.Arg,string,string){
+func Entrance (args *structure.SdkDatas,groupRule protomsg.GroupRule,lable *structure.Others,message *protomsg.SdkMessage) (bool,string,string){
 	resultSplice := []*structure.LittleRuleResult{}
 	sdkNames := ""
 	polygonId := ""
@@ -92,7 +92,7 @@
 	}
 	// 涓綋闈欐
 	for j := 0; j < len(groupRule.Rules); j++ {
-		if groupRule.Rules[j].SdkId == "涓綋闈欐" && groupRule.Rules[j].SdkArgAlias != "time_rule"{
+		if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a977" && groupRule.Rules[j].SdkArgAlias != "time_rule"{
 			for _, sdkData := range args.Sdkdata {
 				// 鏍规嵁瑙勫垯鐨剆dkId鏌ュ嚭鍏跺搴旂殑ipcId锛岀敤ipcId鍘绘壘璇ユ瘮瀵圭殑鏁版嵁
 				sdk, err := cache.GetSdkById(groupRule.Rules[j].SdkId)
@@ -214,9 +214,9 @@
 			panic("瑙勫垯鏈夎锛屽緱鍒扮殑鏁板鍏紡涓嶅彲瑙f瀽")
 		}
 		result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
-		return result.(bool),nil,sdkNames,polygonId
+		return result.(bool),sdkNames,polygonId
 	} else {
-		return false,nil,sdkNames,polygonId
+		return false,sdkNames,polygonId
 	}
 }
 
@@ -288,8 +288,10 @@
 		soName = "personUnsual.so"
 	} else if sdkId == "812b674b-2375-4589-919a-5c1c3278a972" {
 		soName = "faceCompare.so"
-	} else if sdkId == "涓綋闈欐" {
+	} else if sdkId == "812b674b-2375-4589-919a-5c1c3278a977" {
 		soName = "static.so"
+	} else if sdkId == "812b674b-2375-4589-919a-5c1c3278a978" {
+		soName = "car.so"
 	}
 	//soInfo,errr := cache.GetSoInfoById(sdkId)
 	//if errr != nil {
diff --git a/algorithm/static/static.go b/algorithm/static/static.go
index b548cd9..9ad097c 100644
--- a/algorithm/static/static.go
+++ b/algorithm/static/static.go
@@ -113,12 +113,17 @@
 		return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "false", rule.Sort}
 	} else {
 		flag := "false"
+		// 浠ヤ箣鍓嶉潤姝㈢殑瀵硅薄涓轰富鍒ゆ柇鏄惁闈欐
+		tars := []*structure.Arg{}
 		for _, tar := range structure.StaticMap[am.AreaId].Targets {
-			singleResult := SingleStatic(tar,am,lable,90)
+			singleResult,arg := SingleStatic(tar,am,lable,90)
 			if singleResult {
 				flag = "true"
+				tars = append(tars,arg)
 			}
 		}
+		// 鎶婃弧瓒虫潯浠剁殑鐩爣鏀捐繘areaMap涓�
+		am.AlarmObj = tars
 		// 鏇存柊鏁版嵁,鎶婃柊鏉ョ殑鏁版嵁鍐欏叆缂撳瓨
 		objs := []*structure.Obj{}
 		for _, tar := range am.FilterData {
@@ -153,11 +158,13 @@
 }
 
 // 鍒ゆ柇涓�涓洰鏍囨槸鍚﹂潤姝簡鎸囧畾鏃堕棿
-func SingleStatic(person *structure.Obj, am *structure.AreaMap,lable *structure.Others, argValue float64) bool{
+func SingleStatic(person *structure.Obj, am *structure.AreaMap,lable *structure.Others, argValue float64) (bool,*structure.Arg){
 	flag := false
+	var o *structure.Arg = nil
 	for _, obj := range am.FilterData {
 		if person.Id == obj.Id {
 			coincidenceDegree := PgsInterPercent(Rect2Point(person.Location), obj.Location, 1, 1)
+			o = obj
 			if coincidenceDegree >= argValue {
 				flag = true
 			}
@@ -166,13 +173,13 @@
 	if flag { // 鏈変竴涓璞′繚鎸侀潤姝紙id鐩哥瓑骞朵笖閲嶅悎搴﹂珮浜庨槇鍊硷級
 		flagTime := TimerAlarm(lable,person,flag,am.AreaId)
 		if flagTime == "10" || flagTime == "11" {
-			return flag
+			return flag,o
 		} else {
-			return false
+			return false,o
 		}
 	} else {
 		TimerAlarm(lable,person,flag,am.AreaId)
-		return flag
+		return flag,o
 	}
 }
 var rw sync.RWMutex
diff --git a/ruleserver/readyDataForRule.go b/ruleserver/readyDataForRule.go
index 5f603fb..576a95a 100644
--- a/ruleserver/readyDataForRule.go
+++ b/ruleserver/readyDataForRule.go
@@ -273,7 +273,7 @@
 		if  obj.Score >= threshold && float64(obj.Rects.Width*obj.Rects.Height) >= size && PgsInterPercent(areaPoints, obj.Rects, widthScale, heigthScale) >= intersectionper {
 			// 杩欐瑕佸榻愯〃杈惧紡閲屾墍闇�瑕佺殑鎵�鏈夊弬鏁�
 			a.TargetNum++
-			arg1 := structure.Arg{obj.Id,obj.Score, PgsInterPercent(areaPoints, obj.Rects, widthScale, heigthScale), float64(obj.Rects.Width * obj.Rects.Height), obj.IsYolo, obj.Rects, obj.Feature, obj.ThftRes, []*structure.BaseInfo{},nil}
+			arg1 := structure.Arg{obj.Id,obj.Score, PgsInterPercent(areaPoints, obj.Rects, widthScale, heigthScale), float64(obj.Rects.Width * obj.Rects.Height), a.AreaJson,obj.IsYolo, obj.Rects, obj.Feature, obj.ThftRes, []*structure.BaseInfo{},nil}
 			//logger.Println("鏀捐繘鍘荤殑arg锛�-------", arg1)
 			a.Args = append(a.Args, &arg1)
 			a.FilterData = append(a.FilterData, &arg1)
@@ -281,8 +281,6 @@
 	}
 	logger.Info("鍖哄煙鏄細",areaPoints,"鍖哄煙鍐呯洰鏍囨暟閲忎负锛�",a.TargetNum,"---",len(a.FilterData))
 	a.Time = time.Unix(time.Now().Unix(), 0).String()[11:16]
-	a.KeepRight = arg.KeepRight
-	a.IsStatic = arg.IsStatic
 	//logger.Println("--------------------鐪嬬湅鍖哄煙鏁版嵁锛�",*a)
 }
 
diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index e54a5d4..c96892c 100644
--- a/ruleserver/ruleToformula.go
+++ b/ruleserver/ruleToformula.go
@@ -77,7 +77,7 @@
 	}
 }
 
-func CallMiddleware(args *structure.SdkDatas,rule protomsg.GroupRule,lable *structure.Others,message *protomsg.SdkMessage) (bool, []*structure.Arg, string, string){
+func CallMiddleware(args *structure.SdkDatas,rule protomsg.GroupRule,lable *structure.Others,message *protomsg.SdkMessage) (bool, string, string){
 	p,err :=  plugin.Open("./algorithm/middleware.so")
 	if err != nil {
 		panic(err)
@@ -86,8 +86,8 @@
 	if err1 != nil {
 		panic("娌℃湁鎵惧埌涓棿浠跺叆鍙e嚱鏁�")
 	}
-	a,b,c,d := f.(func(args *structure.SdkDatas,rule protomsg.GroupRule,label *structure.Others,message *protomsg.SdkMessage)(bool,[]*structure.Arg, string, string))(args,rule,lable,message)
-	return a,b,c,d
+	a,b,c := f.(func(args *structure.SdkDatas,rule protomsg.GroupRule,label *structure.Others,message *protomsg.SdkMessage)(bool,string, string))(args,rule,lable,message)
+	return a,b,c
 }
 
 func RunRule(args *structure.SdkDatas, groupRule *protomsg.GroupRule, taskId string, message *protomsg.SdkMessage, label structure.Others) (bool,[]int) {
@@ -104,8 +104,16 @@
 	polygonId := ""
 	targets := []*structure.Arg{} // 绗﹀悎鏉′欢鐨勭洰鏍�
 	// 鎶婁竴甯ф暟鎹拰涓�缁勮鍒欏彂缁欑畻娉曢儴鍒嗭紝寰楀嚭鍒ゆ柇缁撴灉
-	result,targets,sdkNames,polygonId = CallMiddleware(args,*groupRule,&label,message)
-	logger.Info("绗﹀悎鏉′欢鐨勭洰鏍囨暟鎹細",targets)
+	result,sdkNames,polygonId = CallMiddleware(args,*groupRule,&label,message)
+	for _, sdkData := range args.Sdkdata {
+		for _, areaMap := range sdkData.AreaMapList {
+			targets = append(targets,areaMap.AlarmObj...)
+			for _,obj := range areaMap.AlarmObj {
+				logger.Info("涓綋闈欐鐨勭洰鏍�",obj.Id,obj.Location)
+			}
+		}
+	}
+	//logger.Info("绗﹀悎鏉′欢鐨勭洰鏍囨暟鎹細",targets)
 	if result {
 		// 鏈�鍚庤繃鎸佺画鏃堕棿绛夋椂闂寸淮搴︾殑鏉′欢   鎶婃椂闂磋鍒欎綅缃皟鏁村埌杩欎釜浣嶇疆鏄负浜嗙紦瀛樻暟鎹�         锛侊紒锛侊紒锛乸s: 瀵圭敾闈腑鍗曚釜鐩爣鍋氬畾鏃跺櫒鐨勪笉鐢ㄥ啀杩囩敾闈㈠畾鏃跺櫒
 		cacheId := ""
diff --git a/structure/rule.go b/structure/rule.go
index ce55b80..9377508 100644
--- a/structure/rule.go
+++ b/structure/rule.go
@@ -8,6 +8,7 @@
 	Score      float64 // 鍖哄煙鍐呯殑鐩爣鐨勭浉浼煎害
 	Proportion float64 // 鍖哄煙鍐呯殑鐩爣鐨勫崰姣�
 	Size       float64 // 鍖哄煙鍐呯殑鐩爣鐨勫昂瀵�
+	AreaJson   string  // 鎵�灞炲尯鍩�
 	IsYolo     bool    // 鏄惁鏄痽olo鏁版嵁
 	Location   Rect    // 璁颁笅姣忎釜鐩爣鐨勪綅缃弬鏁帮紝鏈�鍚庣粰缁撴灉瑁呴厤浜鸿劯鏁版嵁鐨勬椂鍊欑敤鐨勫埌
 	Feature    []byte
@@ -30,10 +31,9 @@
 	TargetNum     int    // 鍖哄煙鍐呯洰鏍囨暟閲�
 	Args          []*Arg // 鍖哄煙鍐呯洰鏍囬泦鍚�
 	FilterData    []*Arg // 杩囨护鍚庡尯鍩熷唴鐩爣闆嗗悎
+	AlarmObj	  []*Arg // 鍖哄煙鍐呮渶鍚庢弧瓒宠鍒欑殑鐩爣
 	Time          string // 褰撳墠鏃堕棿锛堢敤浠ュ尮閰嶆椂闂磋鍒欙級
 	IsEffective   bool   // 瑙勫垯涓槸鍚︾敤鍒颁簡姝ゅ尯鍩�
-	KeepRight     bool   // 鏄惁闈犲彸琛�
-	IsStatic      bool   // 鏄惁闈欐
 }
 
 // sdk杈撳嚭鐨勫浘鐗囦笂鍗曚釜鐩爣鐨勬暟鎹�

--
Gitblit v1.8.0