From 0d08415bcbc5d1b260861365f26b0532771da2c5 Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期日, 29 九月 2019 14:10:41 +0800 Subject: [PATCH] 人脸也画规则框 --- util/simpleCV.go | 27 ++++++++++++++++++++++++++- insertdata/insertDataToEs.go | 6 +++--- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/insertdata/insertDataToEs.go b/insertdata/insertDataToEs.go index e153444..26bb24b 100644 --- a/insertdata/insertDataToEs.go +++ b/insertdata/insertDataToEs.go @@ -191,7 +191,7 @@ err = proto.Unmarshal(bdata, &i) if imgMaxUrl == "" { bigPhotoUrl := make(map[string]interface{}) - bigPhotoUrl, err = util.PostFormBufferData(weedfsUrl, i, uuid.NewV4().String()) + bigPhotoUrl, err = util.DrawPolygonOnImageForFace(msg.Cid, i, msg.RuleResult["face"].([]ruleserver.FaceResult), weedfsUrl) logger.Debug("========澶у浘璺緞锛�", bigPhotoUrl) imgMaxUrl = bigPhotoUrl["fileUrl"].(string) picTime = i.Timestamp @@ -367,7 +367,7 @@ } i := protomsg.Image{} err = proto.Unmarshal(bdata, &i) - resp1, err1 := util.DrawPolygonOnImage(msg1.Cid, i, msg1.RuleResult["yolo"].([]ruleserver.Result), weedfsUrl) + resp1, err1 := util.DrawPolygonOnImageForYolo(msg1.Cid, i, msg1.RuleResult["yolo"].([]ruleserver.Result), weedfsUrl) if err1 != nil { logger.Error("缂撳瓨鏁版嵁鐢绘鎴栦笂浼犲浘鐗囨湇鍔″櫒鍑洪敊", err) } else { @@ -410,7 +410,7 @@ if len(alarmRules) > 0 { isAlarm = 1 //resp, err = util.PostFormBufferData(weedfsUrl, i, uuid.NewV4().String()) - resp, err = util.DrawPolygonOnImage(msg.Cid, i, msg.RuleResult["yolo"].([]ruleserver.Result), weedfsUrl) + resp, err = util.DrawPolygonOnImageForYolo(msg.Cid, i, msg.RuleResult["yolo"].([]ruleserver.Result), weedfsUrl) if err != nil { logger.Error("鐢绘鎴栦笂浼犲浘鐗囨湇鍔″櫒鍑洪敊", err) return diff --git a/util/simpleCV.go b/util/simpleCV.go index 5c074c3..f3f5b6d 100644 --- a/util/simpleCV.go +++ b/util/simpleCV.go @@ -155,7 +155,7 @@ } } -func DrawPolygonOnImage(cameraId string, img protomsg.Image, results []ruleserver.Result,url string) (maps map[string]interface{}, err0 error) { +func DrawPolygonOnImageForYolo(cameraId string, img protomsg.Image, results []ruleserver.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) @@ -187,6 +187,31 @@ return } +func DrawPolygonOnImageForFace(cameraId string, img protomsg.Image, results []ruleserver.FaceResult,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} + + // 鍒嗗壊鍖哄煙id闆嗗悎骞舵牴鎹甶d鏌ヨ鍖哄煙鐒跺悗鐢绘 + for _,result := range results { + polygonIds := strings.Split(result.AlarmPolygon,",") + logger.Info("-----------------------鐪嬬湅鎶ヨ鍖哄煙id锛�",polygonIds) + for i := 0; i < len(polygonIds)-1; i++ { + polygon := getPolygonById(polygonIds[i],cameraId) + if polygon.Polygon != "[]" && polygon.Polygon != ""{ + logger.Debug("鎵�鐢诲尯鍩燂細",polygon.Polygon) + DrawAPolygon(&rook,polygon.Polygon,yellow) + } + } + } + //return nil,nil + maps,err0 = UploadFromMat(url,rook) + return +} + // 鎶婂浘鐗囪浆鎴愪簩杩涘埗娴� func RetrieveROM(filename string) ([]byte, error) { file, err := os.Open(filename) -- Gitblit v1.8.0