From 5433ad847a4eb284658dc7543fa3d94680e5e5bd Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期二, 23 七月 2019 18:34:14 +0800 Subject: [PATCH] 追踪添加容错 --- insertdata/insertDataToEs.go | 11 ++++- ruleserver/ruleToformula.go | 6 +++ ruleserver/personTrack.go | 52 +++++++++++++++++--------- 3 files changed, 48 insertions(+), 21 deletions(-) diff --git a/insertdata/insertDataToEs.go b/insertdata/insertDataToEs.go index 5f23d6d..28ccb80 100644 --- a/insertdata/insertDataToEs.go +++ b/insertdata/insertDataToEs.go @@ -214,6 +214,7 @@ logger.Error("涓婁紶ES鍑洪敊锛�---", err1) } else { logger.Info("鎻掑叆es杩斿洖鐨勪俊鎭細", resp1) + // 鍙戝嚭褰曞儚淇″彿 ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: resp1["_id"].(string), CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid, ImgId: i.Id, SdkIds: []string{}}) } } @@ -287,6 +288,7 @@ logger.Error("涓婁紶ES鍑洪敊锛�---", err1) } else { logger.Info("鎻掑叆es杩斿洖鐨勪俊鎭細", resp1) + // 鍙戝嚭褰曞儚淇″彿 ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: resp1["_id"].(string), CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid, ImgId: i.Id, SdkIds: []string{}}) } //if msg.RuleResult["cacheData"] != nil { @@ -340,6 +342,11 @@ logger.Error("鏌ヨ鎽勫儚鏈轰俊鎭け璐�") } serverIp, err := GetLocalIP() + if msg.RuleResult["cacheData"] != nil { + InsertYolo(msg.RuleResult["cacheData"].(ruleserver.ResultMsg)) + // 鎶婄紦瀛樼殑鏁版嵁涓婁紶鍚庡緱鍒板湴鍧�瀛樿繘鍘� + + } peraction := Personaction{ uuid.NewV4().String(), msg.Cid, @@ -378,9 +385,6 @@ ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: resp1["_id"].(string), CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid, ImgId: i.Id, SdkIds: []string{}}) logger.Warn("__________________________________________寰�ES鎻掑叆yolo鏁版嵁鎴愬姛") //os.Exit(1) - } - if msg.RuleResult["cacheData"] != nil { - InsertYolo(msg.RuleResult["cacheData"].(ruleserver.ResultMsg)) } } } @@ -447,6 +451,7 @@ logger.Error("寰�ES鎻掑叆鏁版嵁澶辫触", err) } else { logger.Info("鎻掑叆es杩斿洖鐨勪俊鎭細", resp1) + // 鍙戝嚭褰曞儚淇″彿 ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: resp1["_id"].(string), CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid, ImgId: i.Id, SdkIds: []string{}}) logger.Warn("__________________________________________寰�ES鎻掑叆yolo鏁版嵁鎴愬姛") //os.Exit(1) diff --git a/ruleserver/personTrack.go b/ruleserver/personTrack.go index f89d269..ab4d4ce 100644 --- a/ruleserver/personTrack.go +++ b/ruleserver/personTrack.go @@ -9,14 +9,16 @@ var TrackPond = make(map[string]*PersonTrack) type PersonTrack struct { - Face int // 浜鸿劯鐨刬d鏁扮粍 鏀逛负鏁伴噺 - Yolo int // yolo瀵硅薄鐨刬d鏁扮粍 鏀逛负鏁伴噺 + Face int // 浜鸿劯鐨刬d鏁扮粍 鏀逛负鏁伴噺 + FaceN int // 娣诲姞瀹归敊锛屽垵濮嬪�间负5锛岃繛缁�5娆′笉瀵规墠绠椾笉瀵� + Yolo int // yolo瀵硅薄鐨刬d鏁扮粍 鏀逛负鏁伴噺 + YoloN int // 娣诲姞瀹归敊锛屽垵濮嬪�间负5锛岃繛缁�5娆′笉瀵规墠绠椾笉瀵� } // 妫�鏌ユ槸鍚﹀墠鍚庝袱娆$殑鏁版嵁id鏄惁瀹屽叏鐩稿悓锛堜汉鑴稿拰yolo锛� 鏀逛负鐩存帴妫�鏌ユ暟閲忔槸鍚︿竴鑷� func IsSame(msg *protomsg.SdkMessage) { - logger.Debug("+++++++++++++++++++++杩借釜寮�濮�+++++++++++++++鎽勫儚鏈篿d涓猴細",msg.Cid) - logger.Debug("---------------------缂撳瓨姹�--------------------------锛�",TrackPond) + logger.Debug("+++++++++++++++++++++杩借釜寮�濮�+++++++++++++++鎽勫儚鏈篿d涓猴細", msg.Cid) + logger.Debug("---------------------缂撳瓨姹�--------------------------锛�", TrackPond) for _, sdkinfo := range msg.Tasklab.Sdkinfos { // 閬嶅巻鍚勭畻娉曠殑sdkData if sdkinfo.Sdktype == "FaceDetect" { // 浜鸿劯妫�娴� if len(sdkinfo.Sdkdata) > 1 { @@ -26,19 +28,25 @@ logger.Info("瑙f瀽face sdk鏁版嵁鏃跺嚭鐜伴敊璇�", err) continue } - logger.Info("================杩借釜涔嬪墠浜鸿劯鐨勪釜鏁帮細",len(faceParam.Faces)) - if faceParam.Faces != nil && TrackPond[msg.Cid] != nil && len(faceParam.Faces) == TrackPond[msg.Cid].Face { // yolo鐨勫鏋滄暟閲忕浉鍚屽垯瑙嗕负涓嶅彉銆佹妸yolo鐨剆dkData娓呯┖ + logger.Info("================杩借釜涔嬪墠浜鸿劯鐨勪釜鏁帮細", len(faceParam.Faces)) + if faceParam.Faces != nil && TrackPond[msg.Cid] != nil && len(faceParam.Faces) == TrackPond[msg.Cid].Face { // yolo鐨勫鏋滄暟閲忕浉鍚屽垯瑙嗕负涓嶅彉銆佹妸yolo鐨剆dkData娓呯┖ faceParam.Faces = (faceParam.Faces)[0:0] - sdkinfo.Sdkdata,err = proto.Marshal(&faceParam) + sdkinfo.Sdkdata, err = proto.Marshal(&faceParam) if err != nil { - logger.Error("浜鸿劯搴忓垪鍖栭敊璇�",err) + logger.Error("浜鸿劯搴忓垪鍖栭敊璇�", err) } - logger.Info("===================杩借釜涓�斾汉鑴哥殑涓暟",len(faceParam.Faces)) + logger.Info("===================杩借釜涓�斾汉鑴哥殑涓暟", len(faceParam.Faces)) } else { if TrackPond[msg.Cid] != nil { - TrackPond[msg.Cid].Face = len(faceParam.Faces) - } else { - TrackPond[msg.Cid] = &PersonTrack{Face:len(faceParam.Faces)} + if TrackPond[msg.Cid].FaceN > 0 { + TrackPond[msg.Cid].FaceN-- + } + if TrackPond[msg.Cid].FaceN == 0 { //姝ゆ椂杩炵画浜旀涓嶅 + TrackPond[msg.Cid].Face = len(faceParam.Faces) + TrackPond[msg.Cid].FaceN = 5 + } + } else { + TrackPond[msg.Cid] = &PersonTrack{Face: len(faceParam.Faces),FaceN:5} } } //for i := 0; i < len(faceParam.Faces); { @@ -61,23 +69,30 @@ continue } var yoloNum int = 0 - for i := 0;i < len(yoloParam.Infos); i++ { + for i := 0; i < len(yoloParam.Infos); i++ { if yoloParam.Infos[i].Typ == 0 { yoloNum++ } } - logger.Info("================杩借釜涔嬪墠yolo鐨勪釜鏁帮細",yoloNum) + logger.Info("================杩借釜涔嬪墠yolo鐨勪釜鏁帮細", yoloNum) if yoloParam.Infos != nil && TrackPond[msg.Cid] != nil && yoloNum == TrackPond[msg.Cid].Yolo { // yolo鐨勫鏋滄暟閲忕浉鍚屽垯瑙嗕负涓嶅彉銆佹妸yolo鐨剆dkData娓呯┖ yoloParam.Infos = (yoloParam.Infos)[0:0] - sdkinfo.Sdkdata,err = proto.Marshal(&yoloParam) + sdkinfo.Sdkdata, err = proto.Marshal(&yoloParam) if err != nil { - logger.Error("yolo搴忓垪鍖栭敊璇�",err) + logger.Error("yolo搴忓垪鍖栭敊璇�", err) } } else { if TrackPond[msg.Cid] != nil { TrackPond[msg.Cid].Yolo = yoloNum + if TrackPond[msg.Cid].YoloN > 0 { + TrackPond[msg.Cid].YoloN-- + } + if TrackPond[msg.Cid].YoloN == 0 { //姝ゆ椂杩炵画浜旀涓嶅 + TrackPond[msg.Cid].Yolo = yoloNum + TrackPond[msg.Cid].YoloN = 5 + } } else { - TrackPond[msg.Cid] = &PersonTrack{Yolo:yoloNum} + TrackPond[msg.Cid] = &PersonTrack{Yolo: yoloNum,YoloN:5} } } } else { @@ -87,6 +102,7 @@ } logger.Debug("---------------------------------------杩借釜缁撴潫--------------------------------------") } + //// 鍒ゆ柇涓�涓汉鑴竔d鍦ㄤ笉鍦ㄨ拷韪睜涓� //func FaceIsInPond(cameraId string,face *protomsg.ResultFaceDetect) bool{ // if TrackPond[cameraId].Face > 0 { @@ -111,4 +127,4 @@ // return false // } // return false -//} \ No newline at end of file +//} diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go index 10f50f5..3e248c9 100644 --- a/ruleserver/ruleToformula.go +++ b/ruleserver/ruleToformula.go @@ -89,6 +89,12 @@ Location []Rect // 鐩爣鐨勫潗鏍� AlarmPolygon string // 瑙﹀彂鐨勬姤璀︽ } + +// 杩囪鍒欏簱鎵撲笂鐨勬爣绛� +type FaceResult struct { + Result + Args []*Arg +} type LittleRuleResult struct { SdkName string // 璁板綍涓嬫缁撴灉鏄摢涓猻dk鐨勭粨鏋� Result string // 宸插寘鍚簡鍓嶇疆杩炴帴绗� -- Gitblit v1.8.0