---
panlei
2019-08-01 db9d26e3e4bd889a1bde64651d6fc39c32ae5391
util/simpleCV.go
@@ -155,14 +155,14 @@
   }
}
func DrawPolygonOnImage(cameraId string, img protomsg.Image, results []ruleserver.Result) (maps map[string]interface{}, err0 error) {
func DrawPolygonOnImage(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)
   defer rook.Close()
   yellow := color.RGBA{255, 255, 0, 0}
   red := color.RGBA{255, 0, 0, 0}
   green := color.RGBA{0, 255, 0, 0}
   // 分割区域id集合并根据id查询区域然后画框
   for _,result := range results  {
@@ -171,18 +171,18 @@
      for i := 0; i < len(polygonIds)-1; i++ {
         polygon := getPolygonById(polygonIds[i],cameraId)
         if polygon.Polygon != "[]" {
            DrawAPolygon(&rook,polygon.Polygon,red)
            DrawAPolygon(&rook,polygon.Polygon,yellow)
         }
      }
   }
   // 把目标框出来
   for _,result := range results  {
      for _,rect := range result.Location {
         gocv.Rectangle(&rook, image.Rect(int(rect.X), int(rect.Y), int(rect.X+rect.Width), int(rect.Y+rect.Height)), green, 1)
         gocv.Rectangle(&rook, image.Rect(int(rect.X), int(rect.Y), int(rect.X+rect.Width), int(rect.Y+rect.Height)), red, 1)
      }
   }
   //return nil,nil
   maps,err0 = UploadFromMat(rook)
   maps,err0 = UploadFromMat(url,rook)
   return
}
@@ -225,9 +225,9 @@
   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), int(points[index].Y)), image.Pt(int(points[0].X), int(points[0].Y)), color, 2)
         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)
      } else {
         gocv.Line(rook, image.Pt(int(points[index].X), int(points[index].Y)), image.Pt(int(points[index+1].X), int(points[index+1].Y)), color, 2)
         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)
      }
   }
}