| | |
| | | package controller |
| | | |
| | | import ( |
| | | "encoding/base64" |
| | | "gat1400Exchange/config" |
| | | "gat1400Exchange/pkg" |
| | | "gat1400Exchange/service" |
| | | "net/http" |
| | | "time" |
| | |
| | | |
| | | 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 { |
| | |
| | | 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) |
| | | } |