zhangzengfei
2024-05-26 379c9650894921633f6a6c8cb5a14f12cef2f6e8
controller/captureCtl.go
@@ -1,7 +1,9 @@
package controller
import (
   "encoding/base64"
   "gat1400Exchange/config"
   "gat1400Exchange/pkg"
   "gat1400Exchange/service"
   "net/http"
   "time"
@@ -62,6 +64,7 @@
   c.JSON(http.StatusOK, gin.H{"ResponseStatusObject": rspMsg})
}
func (a CaptureController) VideoLabels(c *gin.Context) {
   var req vo.RequestVideoLabelList
   if err := c.BindJSON(&req); err != nil {
@@ -87,15 +90,68 @@
   face.FaceAppearTime = videoLabel.BehaviorAnalysisObject.BehaviorBeginTime
   face.FaceDisAppearTime = videoLabel.BehaviorAnalysisObject.BehaviorEndTime
   for idx, _ := range videoLabel.SubImageList.SubImageInfoObject {
   var hasTargetImage bool
   var bgImageWith, bgImageHeight int
   var bgImage *vo.SubImageInfoObject
   for idx, img := range videoLabel.SubImageList.SubImageInfoObject {
      videoLabel.SubImageList.SubImageInfoObject[idx].EventSort = 10
      // 判断是否有小图, 如果没有切一张
      if img.Type == "14" {
         bgImageWith, bgImageHeight = img.Width, img.Height
      } else {
         hasTargetImage = true
         bgImage = &videoLabel.SubImageList.SubImageInfoObject[idx]
   }
   face.SubImageList.SubImageInfoObject = videoLabel.SubImageList.SubImageInfoObject
      face.SubImageList.SubImageInfoObject = append(
         face.SubImageList.SubImageInfoObject,
         videoLabel.SubImageList.SubImageInfoObject[idx],
      )
   }
   if !hasTargetImage && bgImage != nil {
      imgData, err := base64.StdEncoding.DecodeString(bgImage.Data)
      if err != nil {
         c.AbortWithStatus(http.StatusBadRequest)
         return
      }
      var subRect pkg.Rect
      subRect.Left = bgImageWith / 3
      subRect.Top = bgImageHeight / 3
      subRect.Right = subRect.Left * 2
      subRect.Bottom = subRect.Top * 2
      subImage, err := pkg.SubCutImage(imgData, &subRect, 0)
      if err != nil {
         c.AbortWithStatus(http.StatusBadRequest)
         return
      }
      var subImageInfo = vo.SubImageInfoObject{
         ImageID:     bgImage.ImageID + "1",
         EventSort:   10,
         DeviceID:    bgImage.DeviceID,
         StoragePath: "",
         Type:        "11",
         FileFormat:  "Jpeg",
         ShotTime:    bgImage.ShotTime,
         Width:       subRect.Right - subRect.Left,
         Height:      subRect.Top - subRect.Bottom,
         Data:        base64.StdEncoding.EncodeToString(subImage),
      }
      face.SubImageList.SubImageInfoObject = append(
         face.SubImageList.SubImageInfoObject,
         subImageInfo,
      )
   }
   // 如果开启了下级, 身份应该是消息代理, 不再转发到服务器
   if config.ClientConf.Enable && config.ServeConf.Role == "agent" {
      //go a.Repository.VIIDMsgForward(&req)
      var faceObjList vo.RequestFaceList
      faceObjList.FaceListObject.FaceObject = append(faceObjList.FaceListObject.FaceObject, face)
      go a.Repository.VIIDMsgForward(&faceObjList)
   } else if config.ServeConf.Role == "cascade" {
      go service.AddFaceNotification(&face)
   }