From 0d95e05cf47aa7b24a57a673db46d5607016016c Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期六, 16 十一月 2019 11:11:14 +0800
Subject: [PATCH] 目标加timeLable
---
util/simpleCV.go | 31 ++++++
insertdata/insertDataToEs.go | 231 ++++++++++++++++++++++++---------------------
algorithm/static/static.go | 2
structure/rule.go | 1
4 files changed, 156 insertions(+), 109 deletions(-)
diff --git a/algorithm/static/static.go b/algorithm/static/static.go
index 4a0c4b4..282a506 100644
--- a/algorithm/static/static.go
+++ b/algorithm/static/static.go
@@ -223,12 +223,14 @@
if tar.N == 0 && tar.AlarmFlag {
logger.Debug("-------------------------绗﹀悎鎸佺画鏃堕棿瑙勫垯浣嗗苟涓嶆槸棣栨锛屼笉鎶ヨ")
flagTime = "11"
+ o.TimeLable = flagTime
o.CacheData = tar.CacheSdkData
}
if tar.N == 0 && !tar.AlarmFlag { // 杩欑粍瑙勫垯鐨勫畾鏃跺櫒瑕佸叏閮ㄧ瓑浜�0 鏆備笖璁や负涓�缁勮鍒欏彧鏈変竴涓畾鏃跺櫒
logger.Debug("鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��-------------棣栨绗﹀悎鎸佺画鏃堕棿瑙勫垯骞舵姤璀�")
flagTime = "10"
tar.AlarmFlag = true
+ o.TimeLable = flagTime
o.CacheData = tar.CacheSdkData
}
if tar.N != 0 {
diff --git a/insertdata/insertDataToEs.go b/insertdata/insertDataToEs.go
index d255d62..68d864b 100644
--- a/insertdata/insertDataToEs.go
+++ b/insertdata/insertDataToEs.go
@@ -517,122 +517,135 @@
logger.Info("鎻掑叆瀹氭椂鐩爣淇℃伅锛�",len(msg.RuleResult["target"].([]structure.Result)))
for _, yoloResult := range msg.RuleResult["target"].([]structure.Result) {
// 瑁呰浇鐩爣淇℃伅`
- logger.Info("鎶ヨ鐩爣涓暟锛�",len(yoloResult.AlarmObj))
- //var target = new(Target)
- //target.TargetId = strconv.FormatUint(tar.Id, 10)
- //target.TargetScore = tar.Score
- //target.TargetLocation = Points{TopLeft: Point{tar.Location.X, tar.Location.Y}, BottomRight: Point{tar.Location.X + tar.Location.Width, tar.Location.Y + tar.Location.Height}}
- //logger.Info("浜鸿劯鐨刬d:",strconv.FormatUint(face.Id, 10))
- //var targetInfos []Target
- //targetInfos = append(targetInfos, *target)
- // 鑾峰彇鐩爣缂撳瓨鍥剧墖
- url := []string{}
- //InsertYolo(msg.RuleResult["cacheData"].(ruleserver.ResultMsg))
- // 鎶婄紦瀛樼殑鏁版嵁涓婁紶鍚庡緱鍒板湴鍧�瀛樿繘鍘�
- // 瑙e帇缂╁苟涓婁紶鍥剧墖
- url1 := uploadImg(yoloResult.AlarmObj[0].CacheData)
- url = append(url,url1)
- // 娣诲姞鎶ヨ瑙勫垯缁�
- sdkNames := ""
- alarmRules := []AlarmRule{}
- sdkNames = sdkNames + yoloResult.SdkName
- alarm := ChangeToString(yoloResult.DefenceState, yoloResult.AlarmLevel)
- linkInfo := ""
- if yoloResult.IsLink {
- linkInfo = "鑱斿姩浠诲姟"
+ // 濡傛灉鏈夐娆℃姤璀︾殑鍒欐湰甯ф暟鎹彲浠ユ彃鍏�
+ insertFlag := false
+ alarmNum := 0
+ for _,obj := range yoloResult.AlarmObj {
+ if obj.TimeLable == "10" {
+ insertFlag = true
+ alarmNum++
+ }
}
- alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText, yoloResult.DefenceState, linkInfo})
- // 鑱斿姩鍥惧儚鐨勫鐞�
- linkTagInfos := []*LinkInfo{}
- for _, yoloResult := range msg.RuleResult["target"].([]structure.Result) {
- if (yoloResult.Others.TimeLabel == "01" || yoloResult.Others.TimeLabel == "10") && yoloResult.Others.LinkCache != nil && len(yoloResult.Others.LinkCache) > 1 {
- for _, msg2 := range yoloResult.Others.LinkCache {
- // 鎶妋sg2鐨勬暟鎹閰嶆垚涓�涓狿erVideoPicture缁撴瀯浣�
- if msg2.Cid != msg.Cid {
- linkTagInfos = append(linkTagInfos, msg2PersonVideo(msg2))
+ if insertFlag {
+ logger.Info("鎶ヨ鐩爣涓暟锛�",alarmNum)
+ //var target = new(Target)
+ //target.TargetId = strconv.FormatUint(tar.Id, 10)
+ //target.TargetScore = tar.Score
+ //target.TargetLocation = Points{TopLeft: Point{tar.Location.X, tar.Location.Y}, BottomRight: Point{tar.Location.X + tar.Location.Width, tar.Location.Y + tar.Location.Height}}
+ //logger.Info("浜鸿劯鐨刬d:",strconv.FormatUint(face.Id, 10))
+ //var targetInfos []Target
+ //targetInfos = append(targetInfos, *target)
+ // 鑾峰彇鐩爣缂撳瓨鍥剧墖
+ url := []string{}
+ //InsertYolo(msg.RuleResult["cacheData"].(ruleserver.ResultMsg))
+ // 鎶婄紦瀛樼殑鏁版嵁涓婁紶鍚庡緱鍒板湴鍧�瀛樿繘鍘�
+ // 瑙e帇缂╁苟涓婁紶鍥剧墖
+ url1 := uploadImg(yoloResult.AlarmObj[0].CacheData)
+ url = append(url,url1)
+ // 娣诲姞鎶ヨ瑙勫垯缁�
+ sdkNames := ""
+ alarmRules := []AlarmRule{}
+ sdkNames = sdkNames + yoloResult.SdkName
+ alarm := ChangeToString(yoloResult.DefenceState, yoloResult.AlarmLevel)
+ linkInfo := ""
+ if yoloResult.IsLink {
+ linkInfo = "鑱斿姩浠诲姟"
+ }
+ alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText, yoloResult.DefenceState, linkInfo})
+ // 鑱斿姩鍥惧儚鐨勫鐞�
+ linkTagInfos := []*LinkInfo{}
+ for _, yoloResult := range msg.RuleResult["target"].([]structure.Result) {
+ if (yoloResult.Others.TimeLabel == "01" || yoloResult.Others.TimeLabel == "10") && yoloResult.Others.LinkCache != nil && len(yoloResult.Others.LinkCache) > 1 {
+ for _, msg2 := range yoloResult.Others.LinkCache {
+ // 鎶妋sg2鐨勬暟鎹閰嶆垚涓�涓狿erVideoPicture缁撴瀯浣�
+ if msg2.Cid != msg.Cid {
+ linkTagInfos = append(linkTagInfos, msg2PersonVideo(msg2))
+ }
}
}
}
- }
- linkTag := ""
- if len(linkTagInfos) > 0 {
- linkTag = "鑱斿姩浠诲姟"
- }
- isAlarm := 0
- resp := make(map[string]interface{})
- // 瑙e帇缂╁苟涓婁紶鏈抚鏁版嵁鍥剧墖
- bdata1, err := util.UnCompress(msg.Data)
- if err != nil {
- panic("瑙e帇缂╁浘鐗囨椂鍑虹幇閿欒")
- }
- i := protomsg.Image{}
- err = proto.Unmarshal(bdata1, &i)
- if len(alarmRules) > 0 {
- isAlarm = 1
- //resp, err = util.PostFormBufferData(weedfsUrl, i, uuid.NewV4().String())
- resp, err = util.DrawPolygonOnImageForYolo(msg.Cid, i, msg.RuleResult["target"].([]structure.Result), weedfsUrl)
+ linkTag := ""
+ if len(linkTagInfos) > 0 {
+ linkTag = "鑱斿姩浠诲姟"
+ }
+ isAlarm := 0
+ resp := make(map[string]interface{})
+ // 瑙e帇缂╁苟涓婁紶鏈抚鏁版嵁鍥剧墖
+ bdata1, err := util.UnCompress(msg.Data)
if err != nil {
- logger.Error("鐢绘鎴栦笂浼犲浘鐗囨湇鍔″櫒鍑洪敊", err)
- return
+ panic("瑙e帇缂╁浘鐗囨椂鍑虹幇閿欒")
+ }
+ i := protomsg.Image{}
+ err = proto.Unmarshal(bdata1, &i)
+ if len(alarmRules) > 0 {
+ isAlarm = 1
+ //resp, err = util.PostFormBufferData(weedfsUrl, i, uuid.NewV4().String())
+ resp, err = util.DrawPolygonOnImageForYolo(msg.Cid, i, msg.RuleResult["target"].([]structure.Result), weedfsUrl)
+ if err != nil {
+ logger.Error("鐢绘鎴栦笂浼犲浘鐗囨湇鍔″櫒鍑洪敊", err)
+ return
+ } else {
+ logger.Info("涓婁紶鐨勫浘鐗囦俊鎭細", resp)
+ }
} else {
- logger.Info("涓婁紶鐨勫浘鐗囦俊鎭細", resp)
+ isAlarm = 0
+ // 涓嶆槸鎶ヨ鏁版嵁涓嶅瓨
+ return
+ }
+ if resp["fileUrl"] != nil {
+ url = append(url, resp["fileUrl"].(string))
+ //esDataId := uuid.NewV4().String()
+ peraction := Personaction{
+ msg.Push.PushId,
+ msg.Cid,
+ msg.Push.Cam.Name,
+ msg.Push.Cam.Addr,
+ msg.Tasklab.Taskid,
+ msg.Tasklab.Taskname,
+ sdkNames,
+ "",
+ alarmRules,
+ msg.Push.ServerId,
+ msg.Push.ServerName,
+ msg.Push.LocalIp,
+ "",
+ url,
+ i.Timestamp,
+ "",
+ isAlarm,
+ 0,
+ 0,
+ 0,
+ nil,
+ linkTag,
+ linkTagInfos,
+ }
+ requstbody, err := json.Marshal(peraction)
+
+ if len(linkTagInfos)>0 {
+ logger.Info("鑱斿姩浠诲姟1111")
+ }
+ if err != nil {
+ logger.Info("json parse error ", err)
+ return
+ }
+ resp1, err2 := EsReq("POST", personAction, requstbody)
+ if err2 != nil {
+ logger.Error("寰�ES鎻掑叆鏁版嵁澶辫触", err)
+ } else {
+ logger.Debug("鎻掑叆es杩斿洖鐨勬暟鎹俊鎭槸锛坱arget锛夛細", resp1)
+ // 鍙戝嚭褰曞儚淇″彿
+ ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: msg.Push.PushId, CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid, VideoUrl: msg.Push.VideoUrl, ImgId: i.Id, SdkIds: []string{"-1"}, Type: 2})
+ for index,link := range linkTagInfos {
+ logger.Info("鑱斿姩浠诲姟鐨勫綍鍍忎俊鍙凤細",index)
+ ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: msg.Push.PushId, CameraId: link.CameraId, TaskId: msg.Tasklab.Taskid, VideoUrl: msg.Push.VideoUrl, ImgId: i.Id, SdkIds: []string{strconv.Itoa(index)}, Type: 2})
+ }
+ logger.Warn("__________________________________________寰�ES鎻掑叆target鏁版嵁鎴愬姛")
+ //os.Exit(1)
+ }
}
} else {
- isAlarm = 0
- // 涓嶆槸鎶ヨ鏁版嵁涓嶅瓨
- return
- }
- if resp["fileUrl"] != nil {
- url = append(url, resp["fileUrl"].(string))
- //esDataId := uuid.NewV4().String()
- peraction := Personaction{
- msg.Push.PushId,
- msg.Cid,
- msg.Push.Cam.Name,
- msg.Push.Cam.Addr,
- msg.Tasklab.Taskid,
- msg.Tasklab.Taskname,
- sdkNames,
- "",
- alarmRules,
- msg.Push.ServerId,
- msg.Push.ServerName,
- msg.Push.LocalIp,
- "",
- url,
- i.Timestamp,
- "",
- isAlarm,
- 0,
- 0,
- 0,
- nil,
- linkTag,
- linkTagInfos,
- }
- requstbody, err := json.Marshal(peraction)
-
- if len(linkTagInfos)>0 {
- logger.Info("鑱斿姩浠诲姟1111")
- }
- if err != nil {
- logger.Info("json parse error ", err)
- return
- }
- resp1, err2 := EsReq("POST", personAction, requstbody)
- if err2 != nil {
- logger.Error("寰�ES鎻掑叆鏁版嵁澶辫触", err)
- } else {
- logger.Debug("鎻掑叆es杩斿洖鐨勬暟鎹俊鎭槸锛坱arget锛夛細", resp1)
- // 鍙戝嚭褰曞儚淇″彿
- ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: msg.Push.PushId, CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid, VideoUrl: msg.Push.VideoUrl, ImgId: i.Id, SdkIds: []string{"-1"}, Type: 2})
- for index,link := range linkTagInfos {
- logger.Info("鑱斿姩浠诲姟鐨勫綍鍍忎俊鍙凤細",index)
- ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: msg.Push.PushId, CameraId: link.CameraId, TaskId: msg.Tasklab.Taskid, VideoUrl: msg.Push.VideoUrl, ImgId: i.Id, SdkIds: []string{strconv.Itoa(index)}, Type: 2})
- }
- logger.Warn("__________________________________________寰�ES鎻掑叆target鏁版嵁鎴愬姛")
- //os.Exit(1)
- }
+ logger.Info("娌℃湁棣栨鎶ヨ鐨勭洰鏍囷紝涓嶆彃鍏�")
}
}
}
@@ -698,7 +711,7 @@
}
i := protomsg.Image{}
err = proto.Unmarshal(bdata, &i)
- resp1, err1 := util.DrawPolygonOnImageForYolo(msg.Cid, i, msg.RuleResult["target"].([]structure.Result), weedfsUrl)
+ resp1, err1 := util.DrawPolygonOnImageForTarget(msg.Cid, i, msg.RuleResult["target"].([]structure.Result), weedfsUrl)
if err1 != nil {
logger.Error("缂撳瓨鏁版嵁鐢绘鎴栦笂浼犲浘鐗囨湇鍔″櫒鍑洪敊", err)
} else {
diff --git a/structure/rule.go b/structure/rule.go
index 10d4eba..cd6cd74 100644
--- a/structure/rule.go
+++ b/structure/rule.go
@@ -17,6 +17,7 @@
Feature []byte
ThftRes protomsg.ThftResult
Liker []*BaseInfo
+ TimeLable string
CacheData ResultMsg
}
diff --git a/util/simpleCV.go b/util/simpleCV.go
index e88e0b8..32bcdef 100644
--- a/util/simpleCV.go
+++ b/util/simpleCV.go
@@ -187,6 +187,37 @@
return
}
+func DrawPolygonOnImageForTarget(cameraId string, img protomsg.Image, results []structure.Result,url string) (maps map[string]interface{}, err0 error) {
+
+ rook, _ := gocv.NewMatFromBytes(int(img.Height), int(img.Width), gocv.MatTypeCV8UC3, img.Data)
+ //rook := gocv.IMRead("/home/user/workspace/ruleprocess/util/105.jpg",gocv.IMReadColor)
+ defer rook.Close()
+
+ yellow := color.RGBA{255, 255, 0, 0}
+ red := color.RGBA{255, 0, 0, 0}
+ scale := float64(img.Width) / 960 // 鐢诲浘姣斾緥
+ logger.Info("width:",img.Width,"--鐢诲浘姣斾緥锛�",scale)
+ // 鍒嗗壊鍖哄煙id闆嗗悎骞舵牴鎹甶d鏌ヨ鍖哄煙鐒跺悗鐢绘
+ for _,result := range results {
+ polygonIds := strings.Split(result.AlarmPolygon,",")
+ logger.Info("鍖哄煙ID锛�",result.AlarmPolygon,polygonIds)
+ for i := 0; i < len(polygonIds); i++ {
+ polygon := getPolygonById(polygonIds[i],cameraId)
+ if polygon.Polygon != "[]" && polygon.Polygon != ""{
+ DrawAPolygon(&rook,polygon.Polygon,yellow,scale)
+ }
+ }
+ }
+ // 鎶婄洰鏍囨鍑烘潵
+ for _,result := range results {
+ for _,rect := range result.AlarmObj {
+ gocv.Rectangle(&rook, image.Rect(int(rect.Location.X), int(rect.Location.Y), int(rect.Location.X+rect.Location.Width), int(rect.Location.Y+rect.Location.Height)), red, 1)
+ }
+ }
+ //return nil,nil
+ maps,err0 = UploadFromMat(url,rook)
+ return
+}
func DrawPolygonOnImageForFace(cameraId string, img protomsg.Image, results []structure.Result,url string) (maps map[string]interface{}, err0 error) {
rook, _ := gocv.NewMatFromBytes(int(img.Height), int(img.Width), gocv.MatTypeCV8UC3, img.Data)
--
Gitblit v1.8.0