| | |
| | | IsCollect int `json:"isCollect"` |
| | | IsDelete int `json:"isDelete"` |
| | | BaseInfo []*structure.BaseInfo `json:"baseInfo"` |
| | | TargetInfo []Target |
| | | LinkTag string `json:"linkTag"` |
| | | LinkTagInfo []*PerVideoPicture `json:"linkTagInfo"` |
| | | TargetInfo []Target `json:"targetInfo"` |
| | | LinkTag string `json:"linkTag"` |
| | | LinkTagInfo []*LinkInfo `json:"linkTagInfo"` |
| | | } |
| | | |
| | | type LinkInfo struct { |
| | | Id string `json:"id"` |
| | | CameraId string `json:"cameraId"` |
| | | CameraAddr string `json:"cameraAddr"` |
| | | CameraName string `json:"cameraName"` |
| | | PicDate string `json:"picDate"` |
| | | PicMaxUrl string `json:"picMaxUrl"` |
| | | TaskId string `json:"taskId"` |
| | | TaskName string `json:"taskName"` |
| | | SdkName string `json:"sdkName"` |
| | | Content string `json:"content"` |
| | | AlarmRules []AlarmRule `json:"alarmRules"` |
| | | LikeDate string `json:"likeDate"` |
| | | Sex string `json:"sex"` |
| | | Age int32 `json:"age"` |
| | | AgeDescription string `json:"ageDescription"` |
| | | Race string `json:"race"` |
| | | SmileLevel int32 `json:"smileLevel"` |
| | | BeautyLevel int32 `json:"beautyLevel"` |
| | | FaceFeature string `json:"faceFeature"` |
| | | PicSmUrl []string `json:"picSmUrl"` |
| | | VideoUrl string `json:"videoUrl"` |
| | | AnalyServerId string `json:"analyServerId"` |
| | | AnalyServerName string `json:"analyServerName"` |
| | | AnalyServerIp string `json:"analyServerIp"` |
| | | ClusterId string `json:"clusterId"` |
| | | DetectScore float64 `json:"detectScore"` |
| | | IsAlarm int `json:"isAlarm"` |
| | | IsAckAlarm int `json:"isAckAlarm"` |
| | | IsCollect int `json:"isCollect"` |
| | | IsDelete int `json:"isDelete"` |
| | | BaseInfo []*structure.BaseInfo `json:"baseInfo"` |
| | | TargetInfo []Target `json:"targetInfo"` |
| | | } |
| | | |
| | | type Target struct { |
| | | TargetId string `json:"targetId"` |
| | | TargetScore float64 `json:"targetScore"` |
| | | TargetLocation Points |
| | | TargetLocation Points `json:"targetLocation"` |
| | | } |
| | | |
| | | type Points struct { |
| | |
| | | } |
| | | |
| | | type Point struct { |
| | | Lat float64 `json:"lat"` |
| | | Lon float64 `json:"lon"` |
| | | X float64 `json:"x"` |
| | | Y float64 `json:"y"` |
| | | } |
| | | |
| | | // yolo行为的数据结构 |
| | |
| | | IsAckAlarm int `json:"isAckAlarm"` |
| | | IsCollect int `json:"isCollect"` |
| | | IsDelete int `json:"isDelete"` |
| | | TargetInfo []Target |
| | | LinkTag string `json:"linkTag"` |
| | | LinkTagInfo []*PerVideoPicture `json:"linkTagInfo"` |
| | | TargetInfo []Target `json:"targetInfo"` |
| | | LinkTag string `json:"linkTag"` |
| | | LinkTagInfo []*LinkInfo `json:"linkTagInfo"` |
| | | } |
| | | |
| | | type AlarmRule struct { |
| | |
| | | AlarmLevel string `json:"alarmLevel"` |
| | | RuleText string `json:"ruleText"` |
| | | DefenceState bool `json:"defenceState"` |
| | | IsLink bool `json:"isLink"` |
| | | LinkInfo string `json:"linkInfo"` |
| | | } |
| | | |
| | |
| | | //os.Exit(1) |
| | | for _, faceResult := range face.rules { |
| | | alarm := ChangeToString(faceResult.DefenceState, faceResult.AlarmLevel) |
| | | alarmRules = append(alarmRules, AlarmRule{faceResult.RuleGroupId, alarm, faceResult.RuleText, faceResult.DefenceState, faceResult.IsLink, ""}) |
| | | alarmRules = append(alarmRules, AlarmRule{faceResult.RuleGroupId, alarm, faceResult.RuleText, faceResult.DefenceState, ""}) |
| | | } |
| | | i := protomsg.Image{} |
| | | err = proto.Unmarshal(bdata, &i) |
| | |
| | | target.TargetLocation = Points{TopLeft: Point{face.Location.X, face.Location.Y}, BottomRight: Point{face.Location.X + face.Location.Width, face.Location.Y + face.Location.Height}} |
| | | //logger.Info("人脸的id:",strconv.FormatUint(face.Id, 10)) |
| | | var targetInfos []Target |
| | | targetInfos = append(targetInfos,*target) |
| | | targetInfos = append(targetInfos, *target) |
| | | pervideo := PerVideoPicture{ |
| | | face.Uuid, |
| | | msg.Cid, |
| | |
| | | face.Liker, |
| | | targetInfos, |
| | | "", |
| | | nil, |
| | | []*LinkInfo{}, |
| | | } |
| | | requstbody, err := json.Marshal(pervideo) |
| | | |
| | |
| | | if err1 != nil { |
| | | logger.Error("上传ES出错!---", err1) |
| | | } else { |
| | | logger.Info("插入es返回的信息:", resp1) |
| | | logger.Info("插入es返回的信息(人脸):", resp1) |
| | | // 发出录像信号 |
| | | ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: msg.Push.PushId, CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid, VideoUrl: msg.Push.VideoUrl, ImgId: i.Id, SdkIds: []string{}, Type: 1}) |
| | | ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: face.Uuid, CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid, VideoUrl: msg.Push.VideoUrl, ImgId: i.Id, SdkIds: []string{}, Type: 1}) |
| | | } |
| | | } |
| | | } |
| | |
| | | if yoloResult.IsLink { |
| | | linkInfo = "联动任务" |
| | | } |
| | | alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText, yoloResult.DefenceState, yoloResult.IsLink, linkInfo}) |
| | | alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText, yoloResult.DefenceState, linkInfo}) |
| | | // 上传缓存数据的图片拿到url |
| | | if yoloResult.Others.CacheData != nil { |
| | | //InsertYolo(msg.RuleResult["cacheData"].(ruleserver.ResultMsg)) |
| | |
| | | } |
| | | } |
| | | |
| | | linkTagInfos := []*PerVideoPicture{} |
| | | linkTagInfos := []*LinkInfo{} |
| | | for _, yoloResult := range msg.RuleResult["yolo"].([]structure.Result) { |
| | | if (yoloResult.Others.TimeLabel == "01" || yoloResult.Others.TimeLabel == "10") && yoloResult.Others.LinkCache != nil && len(yoloResult.Others.LinkCache) > 1 { |
| | | for _, msg2 := range yoloResult.Others.LinkCache { |
| | | // 把msg2的数据装配成一个PerVideoPicture结构体 |
| | | linkTagInfos = append(linkTagInfos,msg2PersonVideo(msg2)) |
| | | linkTagInfos = append(linkTagInfos, msg2PersonVideo(msg2)) |
| | | } |
| | | } |
| | | } |
| | | linkTag := "" |
| | | if len(linkTagInfos) > 0 { |
| | | linkTag = "联动任务" |
| | | } |
| | | isAlarm := 0 |
| | | resp := make(map[string]interface{}) |
| | |
| | | 0, |
| | | 0, |
| | | targetInfos, |
| | | "", |
| | | linkTag, |
| | | linkTagInfos, |
| | | } |
| | | requstbody, err := json.Marshal(peraction) |
| | | var m map[string]interface{} |
| | | json.Unmarshal(requstbody, &m) |
| | | logger.Info("上传参数json:",m) |
| | | |
| | | if len(linkTagInfos)>0 { |
| | | logger.Info("联动任务") |
| | | } |
| | | if err != nil { |
| | | logger.Info("json parse error ", err) |
| | | return |
| | |
| | | if err2 != nil { |
| | | logger.Error("往ES插入数据失败", err) |
| | | } else { |
| | | logger.Debug("插入es返回的数据信息是:", resp1) |
| | | logger.Debug("插入es返回的数据信息是(yolo):", resp1) |
| | | // 发出录像信号 |
| | | ruleserver.AddLxMessage(&protomsg.VideotapeInfo{EsDataId: msg.Push.PushId, CameraId: msg.Cid, TaskId: msg.Tasklab.Taskid, VideoUrl: msg.Push.VideoUrl, ImgId: i.Id, SdkIds: []string{}, Type: 2}) |
| | | logger.Warn("__________________________________________往ES插入yolo数据成功") |
| | |
| | | return race |
| | | } |
| | | |
| | | func msg2PersonVideo (msg structure.ResultMsg) *PerVideoPicture{ |
| | | func msg2PersonVideo(msg structure.ResultMsg) *LinkInfo { |
| | | if msg.RuleResult["yolo"] != nil && len(msg.RuleResult["yolo"].([]structure.Result)) > 0 { |
| | | // 先判断一下数据带的规则标签是否有可以插入的 |
| | | flag := false |
| | |
| | | if yoloResult.IsLink { |
| | | linkInfo = "联动任务" |
| | | } |
| | | alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText, yoloResult.DefenceState, yoloResult.IsLink, linkInfo}) |
| | | alarmRules = append(alarmRules, AlarmRule{yoloResult.RuleGroupId, alarm, yoloResult.RuleText, yoloResult.DefenceState, linkInfo}) |
| | | // 上传缓存数据的图片拿到url |
| | | if yoloResult.Others.CacheData != nil { |
| | | //InsertYolo(msg.RuleResult["cacheData"].(ruleserver.ResultMsg)) |
| | |
| | | if resp["fileUrl"] != nil { |
| | | url = append(url, resp["fileUrl"].(string)) |
| | | //esDataId := uuid.NewV4().String() |
| | | pervideo := &PerVideoPicture{ |
| | | pervideo := &LinkInfo{ |
| | | msg.Push.PushId + "-" + uuid.NewV4().String(), |
| | | msg.Cid, |
| | | msg.Push.Cam.Addr, |
| | |
| | | "", |
| | | alarmRules, |
| | | time.Now().Format("2006-01-02 15:04:05"), // 只检测,没有比对时间 |
| | | "", //暂改为人脸id strconv.FormatUint(face.Id, 10) |
| | | "", //暂改为人脸id strconv.FormatUint(face.Id, 10) |
| | | 0, |
| | | "", // 暂改为分值fmt.Sprintf("%.2f",face.Score) |
| | | "", |
| | |
| | | 0, |
| | | nil, |
| | | targetInfos, |
| | | "", |
| | | nil, |
| | | } |
| | | return pervideo |
| | | } else { |
| | |
| | | } else { |
| | | return nil |
| | | } |
| | | } |
| | | } |