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