panlei
2019-07-29 4c478e6467d64fc39d89df25f6b9ab289fc0fb93
调整人体追踪
2个文件已修改
25 ■■■■■ 已修改文件
insertdata/insertDataToEs.go 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruleserver/personTrack.go 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
insertdata/insertDataToEs.go
@@ -120,8 +120,10 @@
    logger.Debug("插入数据前看看报警标志位:", timeLabel)
    if timeLabel == "01" { // 无定时器状态要插入的报警数据
        InsertFace(msg)
        ruleserver.BodyIsSame(msg.SdkMessage)
        InsertYolo(msg)
        flag := ruleserver.BodyIsSame(msg.SdkMessage)
        if !flag {
            InsertYolo(msg)
        }
    }
    if timeLabel == "10" { // 定时器状态要插入的首帧报警数据。连带着定时器开启时的那帧
        InsertFace(msg)
ruleserver/personTrack.go
@@ -45,11 +45,11 @@
            }
        }
    }
    logger.Debug("---------------------------------------人脸追踪结束--------------------------------------")
    logger.Debug("--------------------------------人脸追踪结束--------------------------------------")
}
//  追踪人体,检查数量是否一致
func BodyIsSame(msg *protomsg.SdkMessage) {
func BodyIsSame(msg *protomsg.SdkMessage) bool{
    logger.Debug("+++++++++++++++++++++追踪开始+++++++++++++++摄像机id为:", msg.Cid, "---缓存池为:", TrackPond)
    for _, sdkinfo := range msg.Tasklab.Sdkinfos { // 遍历各算法的sdkData
        if sdkinfo.Sdktype == "Yolo" {
@@ -72,12 +72,13 @@
                            logger.Info("================追踪之前yolo的个数:", yoloNum, "还没有这个摄像机的缓存")
                        }
                        if yoloParam.Infos != nil && TrackPond[msg.Cid] != nil && yoloNum == TrackPond[msg.Cid].Yolo { // yolo的如果数量相同则视为不变、把yolo的sdkData清空
                            yoloParam.Infos = (yoloParam.Infos)[0:0]
                            sdkinfo.Sdkdata, err = proto.Marshal(&yoloParam)
                            if err != nil {
                                logger.Error("yolo序列化错误", err)
                            }
                            //yoloParam.Infos = (yoloParam.Infos)[0:0]
                            //sdkinfo.Sdkdata, err = proto.Marshal(&yoloParam)
                            //if err != nil {
                            //    logger.Error("yolo序列化错误", err)
                            //}
                            logger.Info("跟之前相同,清空yolo数据")
                            return true
                        } else {
                            if TrackPond[msg.Cid] != nil {
                                logger.Info("更新当前摄像机缓存池中的yolo个数:", yoloNum)
@@ -86,6 +87,7 @@
                                logger.Info("新建当前摄像机缓存池中的yolo个数:", yoloNum)
                                TrackPond[msg.Cid] = &PersonTrack{Yolo: yoloNum}
                            }
                            return false
                        }
                    } else {
                        if TrackPond[msg.Cid] != nil {
@@ -98,7 +100,8 @@
            }
        }
    }
    logger.Debug("---------------------------------------追踪结束--------------------------------------")
    logger.Debug("---------------------------------追踪结束--------------------------------------")
    return false
}
// 过滤掉那些已在缓存中且分值更低的人脸,更新缓存(没有的加上,分值更新为更高的,多的删除)