panlei
2019-11-07 6e8ebf781ac457b7ec77f7e4c9ade4c3d36002bc
util/simpleCV.go
@@ -156,6 +156,10 @@
   }
}
<<<<<<< HEAD
=======
>>>>>>> a87978244bbb81f2fa7610560ed190acbaa422f8
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)
@@ -164,17 +168,20 @@
   yellow := color.RGBA{255, 255, 0, 0}
   red := color.RGBA{255, 0, 0, 0}
   scale := img.Width / 960 // 画图比例
   scale := float64(img.Width) / 960 // 画图比例
   logger.Info("width:",img.Width,"--画图比例:",scale)
   // 分割区域id集合并根据id查询区域然后画框
   for _,result := range results  {
      polygonIds := strings.Split(result.AlarmPolygon,",")
      logger.Info("-----------------------看看报警区域id:",polygonIds)
      for i := 0; i < len(polygonIds); i++ {
         polygon := getPolygonById(polygonIds[i],cameraId)
         if polygon.Polygon != "[]" && polygon.Polygon != ""{
            logger.Debug("所画区域:",polygon.Polygon)
<<<<<<< HEAD
            DrawAPolygon(&rook,polygon.Polygon,yellow,scale)
=======
            logger.Debug("所画区域:",polygon.Polygon)
            DrawAPolygon(&rook,polygon.Polygon,yellow)
>>>>>>> a87978244bbb81f2fa7610560ed190acbaa422f8
         }
      }
   }
@@ -196,17 +203,27 @@
   defer rook.Close()
   yellow := color.RGBA{255, 255, 0, 0}
   scale := img.Width / 960 // 画图比例
<<<<<<< HEAD
   scale := float64(img.Width) / 960 // 画图比例
   // 分割区域id集合并根据id查询区域然后画框
   for _,result := range results  {
      polygonIds := strings.Split(result.AlarmPolygon,",")
      for i := 0; i < len(polygonIds); i++ {
         polygon := getPolygonById(polygonIds[i],cameraId)
         if polygon.Polygon != "[]" && polygon.Polygon != ""{
            DrawAPolygon(&rook,polygon.Polygon,yellow,scale)
=======
   // 分割区域id集合并根据id查询区域然后画框
   for _,result := range results  {
      polygonIds := strings.Split(result.AlarmPolygon,",")
      logger.Info("-----------------------看看报警区域id:",polygonIds)
      for i := 0; i < len(polygonIds); i++ {
      for i := 0; i < len(polygonIds)-1; i++ {
         polygon := getPolygonById(polygonIds[i],cameraId)
         logger.Info("----查到的报警框:",polygon)
         if polygon.Polygon != "[]" && polygon.Polygon != ""{
            logger.Debug("所画区域:",polygon.Polygon)
            DrawAPolygon(&rook,polygon.Polygon,yellow,scale)
            DrawAPolygon(&rook,polygon.Polygon,yellow)
>>>>>>> a87978244bbb81f2fa7610560ed190acbaa422f8
         }
      }
   }
@@ -242,25 +259,21 @@
   // 查到摄像机所有的区域并画框
   var cameraPolygons []protomsg.CameraPolygon
   cameraPolygons = cache.GetPolygonsByCameraId(cameraId)
   logger.Info("根据id查到的报警框:",cameraPolygons)
   for _, polygon := range cameraPolygons {
      logger.Info("查到的区域id:",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,scale int32) {
func DrawAPolygon(rook *gocv.Mat,polygonString string, color color.RGBA,scale float64) {
   points := ruleserver.Json2points(polygonString)
   logger.Info("int32转为float64:",float64(scale))
   for index := 0; index < len(points); index++ {
      if index == len(points)-1 { // 闭合图形
         gocv.Line(rook, image.Pt(int(points[index].X * float64(scale)), int(points[index].Y * float64(scale))), image.Pt(int(points[0].X * float64(scale)), int(points[0].Y * float64(scale))), 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 * float64(scale)), int(points[index].Y * float64(scale))), image.Pt(int(points[index+1].X * float64(scale)), int(points[index+1].Y * float64(scale))), 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)
      }
   }
}