From e0c4bae41fac4213f8bb2cf771969b1cd9cf93c2 Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期六, 29 六月 2019 19:11:47 +0800 Subject: [PATCH] 改为指针传递 --- ruleserver/ruleToformula.go | 52 +++++++++++++++++++++++++--------------------------- 1 files changed, 25 insertions(+), 27 deletions(-) diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go index db4f8e6..aa4b8da 100644 --- a/ruleserver/ruleToformula.go +++ b/ruleserver/ruleToformula.go @@ -101,18 +101,6 @@ Liker []LikePerson // 濡傛灉鏄汉鑴哥殑璇濆挨鍏舵槸姣斿锛屽簲瀛樹笅浠栬窡搴曞簱鐨勪汉鍛樼殑鐩镐技鎯呭喌 yolo鐨勮瘽缁檔il灏辫 } -// 浠庨�氶亾涓幏鍙栫殑sdk杈撳嚭鐨勫浘鍍忔暟鎹�(鐩墠涓昏鏄痽olo绠楁硶鐨勬暟鎹�) -//type ArgsFromSdk struct { -// CameraId string -// TaskId string -// Photo []PhotoMap // yolo绠楁硶缁撴瀯锛屼篃鍙互瀛樹汉鑴哥殑鏁版嵁锛屾瘯绔熶汉鑴镐腑鑳界敤瑙勫垯鏉ユ祴鐨勮繕鏄偅浜涘弬鏁� -// KeepRight bool // 鏄惁闈犲彸琛� 绠楁硶鍒ゆ柇鐨勪笌涓婁竴甯у浘鍍忕殑姣旇緝缁撴灉 -// IsStatic bool // 鏄惁闈欐 -// ImageWidth int // 鎽勫儚鏈烘媿鎽勭殑鍥惧儚瀹� 鍍忕礌 -// ImageHeight int // 鎽勫儚鏈烘媿鎽勭殑鍥惧儚楂� 鍍忕礌 -// RuleResult []Result // 杩囧畬瑙勫垯鍚庢墦鐨勬爣绛� -//} - // 姣忎釜绠楁硶瀵逛簬褰撳墠甯х敾闈㈣嚜宸辨彁鍙栫殑鏁版嵁 type SdkData struct { TaskId string @@ -124,13 +112,13 @@ IsStatic bool // 鏄惁闈欐 ImageWidth int // 鎽勫儚鏈烘媿鎽勭殑鍥惧儚瀹� 鍍忕礌 ImageHeight int // 鎽勫儚鏈烘媿鎽勭殑鍥惧儚楂� 鍍忕礌 - AreaMapList []AreaMap // 鏈瑂dk鎻愬彇鐨勬暟鎹寜鐓у尯鍩熷垝鍒嗗悗鐨勬暟鎹泦鍚� + AreaMapList []AreaMap // 鏈瑂dk鎻愬彇鐨勬暟鎹寜鐓у尯鍩熷垝鍒嗗悗鐨勬暟鎹泦鍚� } // 浠庣畻娉曟ā鍧楀効鎷挎潵鐨勫涓�甯у浘鍍忓悇涓畻娉曟彁鍙栫殑鏁版嵁闆嗗悎 type SdkDatas struct { CameraId string - Sdkdata []SdkData + Sdkdata []*SdkData RuleResult map[string]interface{} // 杩囧畬瑙勫垯鍚庢墦鐨勬爣绛� face: []Arg yolo: []Result } @@ -170,17 +158,18 @@ } // 鏍规嵁鎽勫儚鏈篿d鎷垮埌鎽勫儚鏈烘墍鏈夊尯鍩� -func GetPolygons(cameraId string) []*protomsg.CameraPolygon { +func GetPolygons(cameraId string) []protomsg.CameraPolygon { var api dbapi.CameraApi data := api.FindAllPolygons() //fmt.Println("鏌ュ埌鐨勬墍鏈夊尯鍩燂細", data) // 鏍规嵁id浠巑ap涓嬁鍒板尯鍩� - var cameraPolygons []*protomsg.CameraPolygon + var cameraPolygons []protomsg.CameraPolygon for _, item := range data { - if item.CameraId == cameraId { + if item.CameraId == cameraId && item.Type != "line" { // 闇�瑕佹牴鎹瘮渚嬫妸鍓嶅彴鐢荤殑鍖哄煙鐨勫潗鏍囪浆鍖栦负鐩稿簲鎽勫儚鏈烘媿鎽勭殑鍥惧儚鐨勫ぇ灏� x鍧愭爣鍒嗗埆*image.width/椤甸潰鍖哄煙瀹� y鍧愭爣鍒嗗埆*image.height/椤甸潰鍖哄煙楂� // 鍓嶅彴瀹介珮鍥哄畾 - cameraPolygons = append(cameraPolygons, &item) + //log.Println("------------绗﹀悎鏉′欢鐨勫尯鍩燂細",item) + cameraPolygons = append(cameraPolygons, item) } } //log.Println("鏍规嵁鎽勫儚鏈篿d鏌ュ埌鐨勫尯鍩�", cameraPolygons, "--鍖哄煙鏁伴噺涓猴細", len(cameraPolygons)) @@ -188,28 +177,30 @@ } // 鎶妔dk浠庢暟鎹抚涓婃彁鍙栫殑鎸夌収鍖哄煙鍒嗙被褰掔疆 -func SdkDataFormat(cameraId string, arg *SdkData, cameraPolygons []*protomsg.CameraPolygon) { - // cameraPolygons := GetPolygons(arg.CameraId) - // list := AreaMapList{} +func SdkDataFormat(cameraId string, arg *SdkData, cameraPolygons []protomsg.CameraPolygon) { for _, polygon := range cameraPolygons { + //log.Println("++++++鍦ㄨ繖鍎跨湅涓�涓嬪尯鍩熷晩", polygon) areaMap := AreaMap{cameraId: cameraId, areaId: polygon.Id, areaJson: polygon.Polygon, triggerLine: polygon.TriggerLine, directionLine: polygon.DirectionLine} // 涓烘瘡涓憚鍍忔満鍖哄煙濉厖鏁版嵁 areaMap.CountAreaObjs(arg) + log.Println("-------areaMap鐨勫唴瀹�",areaMap) arg.AreaMapList = append(arg.AreaMapList, areaMap) + log.Println("-------AreaMapList鐨勫唴瀹�",arg.AreaMapList) } } // 瀵瑰崟甯у浘鍍忕殑鍒ゆ柇 鏄垗寮冿紙鎴栬�呰瀵逛簬鏌愪簺闇�姹傚彲浠ユ斁ES鏁版嵁搴撲竴浠斤級杩樻槸杩斿洖 -func Judge(args *SdkDatas) { +func Judge(args SdkDatas) { if len(args.Sdkdata) > 0 { // 鎷垮埌鏈憚鍍忔満鐨勫尯鍩� cameraPolygons := GetPolygons(args.CameraId) // 鎶婃墍鏈夌殑sdk鎻愬彇鐨勬暟鎹兘鎸夋墍灞炴憚鍍忔満鐨勫尯鍩熷綊缃� for _, arg := range args.Sdkdata { - SdkDataFormat(args.CameraId, &arg, cameraPolygons) + SdkDataFormat(args.CameraId, arg, cameraPolygons) } // 璺戞湰鎽勫儚鏈虹殑鎵�鏈夎鍒欑粍 涓�缁勪竴缁勮窇 taskRuleList := GetRuleGroup(args.CameraId) // 鏈憚鍍忔満涓嬫墍鏈変换鍔$粍 + //log.Println("鐪嬩笅鎽勫儚鏈轰笅鐨勪换鍔$粍锛�",taskRuleList) // 寰楀埌灞炰簬璇ユ憚鍍忔満鐨勮嫢骞茬粍浠诲姟鐨勫畬鏁磋鍒欙紙璺熸瘡涓�鏉″畬鏁磋鍒欐瘮杈冧箣鍚庡緱鍑烘湰寮犲浘鍍忓浜庢煇涓鍒欐槸鍚︽姤璀︾殑缁撴灉銆傛斁杩沵ap锛屾瘮濡傛湰甯у浘鍍忕殑id锛屾墍纰版挒鎴愬姛鐨勮鍒檌d锛� args.RuleResult = make(map[string]interface{}) args.RuleResult["yolo"] = []Result{} @@ -226,6 +217,7 @@ linkTask(args, ruleList[i], taskId) } else { // 鐙珛浠诲姟鐨勫鐞� + log.Println("----------------------------------------64鎽勫儚鏈哄叆鍏�") RunRule(args, ruleList[i], taskId) } } @@ -234,11 +226,14 @@ } } } -func RunRule(args *SdkDatas, groupRule *protomsg.GroupRule, taskId string) bool { +func RunRule(args SdkDatas, groupRule *protomsg.GroupRule, taskId string) bool { resultSplice := []*LittleRuleResult{} // 鍏堣繃瀹屾潯浠惰鍒� for j := 0; j < len(groupRule.Rules); j++ { for _, sdkData := range args.Sdkdata { + if sdkData.SdkId == "812b674b-2375-4589-919a-5c1c3278a975" { + log.Println("鍏ヤ镜鐨勭畻娉曟暟鎹�", sdkData) + } for _, areaMap := range sdkData.AreaMapList { ruleResult := filterRule(groupRule.Rules[j], &areaMap) if ruleResult.Result != "" { @@ -325,7 +320,7 @@ sdkName := "" for j := 0; j < len(groupRule.Rules); j++ { for _, sdkData := range args.Sdkdata { - if groupRule.Rules[j].SdkId == sdkData.SdkId && sdkData.IsYolo{ // 鍙褰晊olo绗﹀悎瑙勫垯鐨剆dk + if groupRule.Rules[j].SdkId == sdkData.SdkId && sdkData.IsYolo { // 鍙褰晊olo绗﹀悎瑙勫垯鐨剆dk sdkName = sdkName + "," + sdkData.SdkName } } @@ -370,6 +365,7 @@ // } for _, obj := range arg.Photo { + log.Println("------------------鐪嬬湅sdkData鐨凱hoto鏁版嵁----------------", obj, "----椤轰究鐪嬬湅鍗犳瘮-----锛�", PgsInterPercent(areaPoints, obj.Rects, widthScale, heigthScale)) if threshold <= obj.Score && size <= float64(obj.Rects.Width*obj.Rects.Height) && intersectionper <= PgsInterPercent(areaPoints, obj.Rects, widthScale, heigthScale) { // 杩欐瑕佸榻愯〃杈惧紡閲屾墍闇�瑕佺殑鎵�鏈夊弬鏁� a.targetNum++ @@ -421,7 +417,7 @@ } // 鑱斿姩浠诲姟鐨勫鐞� -func linkTask(args *SdkDatas, groupRule *protomsg.GroupRule, taskId string) { +func linkTask(args SdkDatas, groupRule *protomsg.GroupRule, taskId string) { // new涓�涓畾鏃跺櫒锛屽鏋滀互姝roupId涓烘爣蹇楃殑瀹氭椂鍣ㄤ笉瀛樺湪鐨勮瘽 var flag bool = true var timeEle = TimeElement{N: 3, InitN: 3, GroupId: groupRule.GroupId} @@ -482,7 +478,7 @@ sdkName := "" for j := 0; j < len(groupRule.Rules); j++ { for _, sdkData := range args.Sdkdata { - if groupRule.Rules[j].SdkId == sdkData.SdkId && sdkData.IsYolo{ // 鍙褰晊olo绗﹀悎瑙勫垯鐨剆dk + if groupRule.Rules[j].SdkId == sdkData.SdkId && sdkData.IsYolo { // 鍙褰晊olo绗﹀悎瑙勫垯鐨剆dk sdkName = sdkName + "," + sdkData.SdkName } } @@ -510,6 +506,7 @@ func filterRule(rule *protomsg.Rule, am *AreaMap) LittleRuleResult { if rule.SdkId == "FaceDetect" || rule.SdkId == "FaceCompare" { // 澶勭悊鐨勬槸浜鸿劯绠楁硶 濡傛灉杩欐潯瑙勫垯閰嶇疆鐨勬槸浜鸿劯绠楁硶锛岃繃婊ゅ畬鏉′欢涔嬪悗鐩存帴寰楀嚭缁撴灉锛屽洜涓鸿偗瀹氭病鏈夋暟閲忔潯浠讹紝鑷繁鎷兼帴 + log.Println("------------------------------------------杩樿兘杩涜繖鍎夸簡涓嶆垚锛燂紵锛�") if rule.SdkId == am.sdkId && rule.PolygonId == am.areaId { // 绠楁硶鍜屽尯鍩熼兘寰楀鐨勪笂 if rule.SdkId == "FaceCompare" { @@ -591,6 +588,7 @@ } } else { // 澶勭悊鐨勯兘鏄痽olo鏁版嵁 + log.Println("瑙勫垯涓殑sdkId涓猴細", rule.SdkId, "--鍖哄煙鏁版嵁闆嗗悎涓殑sdkId涓猴細", am.sdkId, "--瑙勫垯涓殑鍖哄煙Id涓猴細", rule.PolygonId, "--鍖哄煙鏁版嵁闆嗗悎涓殑鍖哄煙Id涓猴細", am.areaId, ) if rule.SdkId == am.sdkId && rule.PolygonId == am.areaId { // 棣栧厛杩欐潯瑙勫垯寰楁槸杩欎釜绠楁硶鐨勮鍒欙紝鍏舵瑙勫垯鎵�瀵瑰簲鐨勫尯鍩焛d瑕佽窡鍖哄煙鏁版嵁鐨刬d瀵圭殑涓� if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 鍒ゆ柇鐨勬槸鐩镐技鍊硷紝鍗犳瘮锛屽昂瀵哥瓑杩囨护鏉′欢锛屽鏋滃啀鏈夛紝杩樺彲浠ュ啀鍔� var args []Arg -- Gitblit v1.8.0