---
panlei
2019-11-18 bd010e089c31b2dad10e93214ae39e21621aa09f
util/simpleCV.go
@@ -155,7 +155,6 @@
      }
   }
}
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)
@@ -169,19 +168,18 @@
   // 分割区域id集合并根据id查询区域然后画框
   for _,result := range results  {
      polygonIds := strings.Split(result.AlarmPolygon,",")
      logger.Info("-----------------------看看报警区域id:",polygonIds)
      logger.Info("区域ID:",result.AlarmPolygon,polygonIds)
      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,scale)
         }
      }
   }
   // 把目标框出来
   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)), red, 1)
      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
@@ -189,7 +187,38 @@
   return
}
func DrawPolygonOnImageForFace(cameraId string, img protomsg.Image, results []structure.FaceResult,url string) (maps map[string]interface{}, err0 error) {
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集合并根据id查询区域然后画框
   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)
   //rook := gocv.IMRead("/home/user/workspace/ruleprocess/util/105.jpg",gocv.IMReadColor)
@@ -200,12 +229,9 @@
   // 分割区域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)
         logger.Info("----查到的报警框:",polygon)
         if polygon.Polygon != "[]" && polygon.Polygon != ""{
            logger.Debug("所画区域:",polygon.Polygon)
            DrawAPolygon(&rook,polygon.Polygon,yellow,scale)
         }
      }
@@ -242,11 +268,8 @@
   // 查到摄像机所有的区域并画框
   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
      }
   }