From 619fed9a763de64660fff208300d0bd07b79f9b4 Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期六, 02 十一月 2019 11:23:57 +0800 Subject: [PATCH] --- --- util/simpleCV.go | 30 ++++++++++++++++++------------ 1 files changed, 18 insertions(+), 12 deletions(-) diff --git a/util/simpleCV.go b/util/simpleCV.go index f3f5b6d..a3ca1c3 100644 --- a/util/simpleCV.go +++ b/util/simpleCV.go @@ -11,6 +11,7 @@ "ruleprocess/cache" "basic.com/valib/logger.git" "ruleprocess/ruleserver" + "ruleprocess/structure" "strings" ) @@ -155,7 +156,7 @@ } } -func DrawPolygonOnImageForYolo(cameraId string, img protomsg.Image, results []ruleserver.Result,url string) (maps map[string]interface{}, err0 error) { +func DrawPolygonOnImageForYolo(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) @@ -163,16 +164,17 @@ 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锛�",polygonIds) - for i := 0; i < len(polygonIds)-1; i++ { + for i := 0; i < len(polygonIds); i++ { polygon := getPolygonById(polygonIds[i],cameraId) if polygon.Polygon != "[]" && polygon.Polygon != ""{ logger.Debug("鎵�鐢诲尯鍩燂細",polygon.Polygon) - DrawAPolygon(&rook,polygon.Polygon,yellow) + DrawAPolygon(&rook,polygon.Polygon,yellow,scale) } } } @@ -187,23 +189,24 @@ return } -func DrawPolygonOnImageForFace(cameraId string, img protomsg.Image, results []ruleserver.FaceResult,url string) (maps map[string]interface{}, err0 error) { +func DrawPolygonOnImageForFace(cameraId string, img protomsg.Image, results []structure.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} - + scale := float64(img.Width) / 960 // 鐢诲浘姣斾緥 // 鍒嗗壊鍖哄煙id闆嗗悎骞舵牴鎹甶d鏌ヨ鍖哄煙鐒跺悗鐢绘 for _,result := range results { polygonIds := strings.Split(result.AlarmPolygon,",") logger.Info("-----------------------鐪嬬湅鎶ヨ鍖哄煙id锛�",polygonIds) - for i := 0; i < len(polygonIds)-1; i++ { + for i := 0; i < len(polygonIds); i++ { polygon := getPolygonById(polygonIds[i],cameraId) + logger.Info("----鏌ュ埌鐨勬姤璀︽锛�",polygon) if polygon.Polygon != "[]" && polygon.Polygon != ""{ logger.Debug("鎵�鐢诲尯鍩燂細",polygon.Polygon) - DrawAPolygon(&rook,polygon.Polygon,yellow) + DrawAPolygon(&rook,polygon.Polygon,yellow,scale) } } } @@ -239,21 +242,24 @@ // 鏌ュ埌鎽勫儚鏈烘墍鏈夌殑鍖哄煙骞剁敾妗� var cameraPolygons []protomsg.CameraPolygon cameraPolygons = cache.GetPolygonsByCameraId(cameraId) + logger.Info("鏍规嵁id鏌ュ埌鐨勬姤璀︽锛�",cameraPolygons) for _, polygon := range cameraPolygons { - if polygon.Id == polygonId { + logger.Info("鏌ュ埌鐨勫尯鍩焛d锛�",polygon.Id,"--瑕佸尮閰嶇殑鏁版嵁id锛�",polygonId,"---鏄惁鐩哥瓑锛�",strings.Contains(polygonId,polygon.Id)) + if strings.Contains(polygonId,polygon.Id) { + logger.Info("杩涙潵鍗崇浉绛�") return polygon } } return protomsg.CameraPolygon{} } // 鍦ㄥ浘涓婄敾涓�涓 -func DrawAPolygon(rook *gocv.Mat,polygonString string, color color.RGBA) { +func DrawAPolygon(rook *gocv.Mat,polygonString string, color color.RGBA,scale float64) { points := ruleserver.Json2points(polygonString) for index := 0; index < len(points); index++ { if index == len(points)-1 { // 闂悎鍥惧舰 - gocv.Line(rook, image.Pt(int(points[index].X*1.33), int(points[index].Y*1.33)), image.Pt(int(points[0].X*1.33), int(points[0].Y*1.33)), color, 2) + gocv.Line(rook, image.Pt(int(points[index].X * scale), int(points[index].Y * scale)), image.Pt(int(points[0].X * scale), int(points[0].Y * scale)), color, 2) } else { - gocv.Line(rook, image.Pt(int(points[index].X*1.33), int(points[index].Y*1.33)), image.Pt(int(points[index+1].X*1.33), int(points[index+1].Y*1.33)), color, 2) + gocv.Line(rook, image.Pt(int(points[index].X * scale), int(points[index].Y * scale)), image.Pt(int(points[index+1].X * scale), int(points[index+1].Y * scale)), color, 2) } } } -- Gitblit v1.8.0