panlei
2019-09-12 b66b09e50e0163deb2823bfacfb06408523500e8
person track
1个文件已修改
18 ■■■■ 已修改文件
ruleserver/personTrack.go 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruleserver/personTrack.go
@@ -118,13 +118,18 @@
func FaceIsInPond(cameraId string, sdkinfor *protomsg.SdkmsgWithTask) string {
    if TrackPond[cameraId] != nil {
        logger.Info("----马前炮:", TrackPond[cameraId], "=====", len(TrackPond[cameraId].Faces))
        for _,face := range TrackPond[cameraId].Faces  {
            logger.Info("缓存中存储的face数据:",face.Id,face.Score)
        }
        faceParam := protomsg.ParamFacePos{}
        err := proto.Unmarshal(sdkinfor.Sdkdata, &faceParam)
        if err != nil {
            logger.Info("解析face sdk数据时出现错误", err)
        }
        logger.Info("================追踪之前人脸的个数:", len(faceParam.Faces))
        for _,face := range faceParam.Faces  {
            logger.Info("新来的的face数据:",face.Pos.FaceID,face.Pos.FAngle.Confidence)
        }
        var facesTemp []protomsg.ResultFaceDetect
        for _,face := range faceParam.Faces {
            facesTemp = append(facesTemp,*face) // 先把数据转存一份,不然一会儿数据删减之后找不到原始数据,不能让缓存数据更新了
@@ -147,17 +152,20 @@
                }
            }
            if !faceFlag { // 此人脸不在池子中
                logger.Info("添加数据更新缓存")
                logger.Info("此人脸不在池子中,往池子中添加数据更新缓存")
                TrackPond[cameraId].Faces = append(TrackPond[cameraId].Faces, &Face{faceParam.Faces[i].Pos.FaceID, faceParam.Faces[i].Pos.FAngle.Confidence})
                i++
            }
        }
        logger.Info("反序列化重新装配之前人脸的个数:",len(faceParam.Faces))
        logger.Info("临时存储的新来数据:")
        for _, temp := range facesTemp {
            logger.Info("临时存储的新来的的face数据:",temp.Pos.FaceID,temp.Pos.FAngle.Confidence)
        }
        sdkinfor.Sdkdata, err = proto.Marshal(&faceParam)
        if err != nil {
            logger.Error("yolo序列化错误", err)
            logger.Error("人脸序列化错误", err)
        }
        logger.Info("跟之前相同,清空yolo数据")
        // 反向循环 ,看那些缓存有而数据没有的就删除数据更新缓存
        for i := 0; i < len(TrackPond[cameraId].Faces); {
            flag := false
@@ -170,7 +178,7 @@
                i++
            } else {
                // 此数据在缓存中但不在来的数据帧中,删除此数据更新缓存
                logger.Info("删除数据更新缓存")
                logger.Info("删除池子中的数据更新缓存")
                TrackPond[cameraId].Faces = append(TrackPond[cameraId].Faces[:i], TrackPond[cameraId].Faces[i+1:]...)
            }
        }