From 4c2afb8dcff9ed2438fcf71a95188d4e8bc60d07 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期一, 27 五月 2024 02:15:10 +0800
Subject: [PATCH] 添加A2梯控的osd
---
controller/captureCtl.go | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 108 insertions(+), 3 deletions(-)
diff --git a/controller/captureCtl.go b/controller/captureCtl.go
index 80ceb91..a6fc5cb 100644
--- a/controller/captureCtl.go
+++ b/controller/captureCtl.go
@@ -1,7 +1,9 @@
package controller
import (
+ "encoding/base64"
"gat1400Exchange/config"
+ "gat1400Exchange/pkg"
"gat1400Exchange/service"
"net/http"
"time"
@@ -52,9 +54,6 @@
go a.Repository.FaceForward(req.FaceListObject.FaceObject)
}
- // 璁惧淇濇椿
- service.KeepDeviceAlive(face.DeviceID)
-
rspMsg := vo.ResponseStatus{
RequestURL: c.FullPath(),
StatusCode: vo.StatusSuccess,
@@ -65,3 +64,109 @@
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 {
+ c.AbortWithStatus(http.StatusBadRequest)
+ return
+ }
+
+ if len(req.VideoLabelListObject.VideoLabelObject) == 0 {
+ c.AbortWithStatus(http.StatusBadRequest)
+ return
+ }
+
+ videoLabel := req.VideoLabelListObject.VideoLabelObject[0]
+ logger.Debug("Receive new message, Id:%s Ip:%s ", videoLabel.VideoLabelID, c.RemoteIP())
+
+ // 杞汉鑴告秷鎭�
+ var face vo.FaceObject
+ face.FaceID = videoLabel.VideoLabelID
+ face.InfoKind = 1
+ face.SourceID = videoLabel.VideoImageID
+ face.DeviceID = videoLabel.IVADeviceID
+ face.LocationMarkTime = videoLabel.CreateTimeAbs
+ face.FaceAppearTime = videoLabel.BehaviorAnalysisObject.BehaviorBeginTime
+ face.FaceDisAppearTime = videoLabel.BehaviorAnalysisObject.BehaviorEndTime
+
+ 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 = 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" {
+ 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)
+ }
+
+ if config.ForwardConf.SyncServer != "" {
+ go a.Repository.FaceForward([]vo.FaceObject{face})
+ }
+
+ rspMsg := vo.ResponseStatus{
+ RequestURL: c.FullPath(),
+ StatusCode: vo.StatusSuccess,
+ StatusString: vo.StatusString[vo.StatusSuccess],
+ Id: videoLabel.VideoLabelID,
+ LocalTime: time.Now().Format("20060102150405"),
+ }
+
+ c.JSON(http.StatusOK, gin.H{"ResponseStatusObject": rspMsg})
+}
--
Gitblit v1.8.0