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