panlei
2019-10-31 2171427a314af4830f3452bc560b104b27efd970
人体追踪相同的把yolo标签也删掉
2个文件已修改
19 ■■■■■ 已修改文件
ruleserver/personTrack.go 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruleserver/ruleToformula.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruleserver/personTrack.go
@@ -50,7 +50,7 @@
}
//  追踪人体,检查数量是否一致
func BodyIsSame(msg *protomsg.SdkMessage) bool{
func BodyIsSame(args *structure.SdkDatas,msg *protomsg.SdkMessage) bool{
    logger.Debug("+++++++++++++++++++++人体追踪开始+++++++++++++++摄像机id为:", msg.Cid, "---缓存池为:", TrackPond)
    for _, sdkinfo := range msg.Tasklab.Sdkinfos { // 遍历各算法的sdkData
        if sdkinfo.Sdktype == "Yolo" {
@@ -73,12 +73,14 @@
                            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)
                            //}
                            logger.Info("跟之前相同,清空yolo数据")
                            yoloParam.Infos = (yoloParam.Infos)[0:0]
                            sdkinfo.Sdkdata, err = proto.Marshal(&yoloParam)
                            if err != nil {
                                logger.Error("yolo序列化错误", err)
                            }
                            delete(args.RuleResult,"yolo")
                            logger.Info("清除yolo标签,",args.RuleResult["yolo"])
                            logger.Info("跟之前相同,清空yolo数据,人体追踪结束")
                            return true
                        } else {
                            if TrackPond[msg.Cid] != nil {
@@ -88,6 +90,7 @@
                                logger.Info("新建当前摄像机缓存池中的yolo个数:", yoloNum)
                                TrackPond[msg.Cid] = &PersonTrack{Yolo: yoloNum}
                            }
                            logger.Debug("---------------------------------人体追踪结束--------------------------------------")
                            return false
                        }
                    } else {
ruleserver/ruleToformula.go
@@ -71,7 +71,7 @@
            // 如果标签中含有持续时间首次报警的timeLabel的话则不需要过人体追踪,不然就没的插入了
            fk := TrackOrNot(args.RuleResult)
            if !fk {
                BodyIsSame(message)
                BodyIsSame(args,message)
            }
        }
    }