panlei
2019-11-04 516d94938f664e71dd323426221b535d5e92881b
ruleserver/personTrack.go
@@ -4,6 +4,7 @@
   "basic.com/pubsub/protomsg.git"
   "github.com/golang/protobuf/proto"
   "basic.com/valib/logger.git"
   "ruleprocess/structure"
)
var TrackPond = make(map[string]*PersonTrack)
@@ -49,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" {
@@ -72,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 {
@@ -87,6 +90,7 @@
                        logger.Info("新建当前摄像机缓存池中的yolo个数:", yoloNum)
                        TrackPond[msg.Cid] = &PersonTrack{Yolo: yoloNum}
                     }
                     logger.Debug("---------------------------------人体追踪结束--------------------------------------")
                     return false
                  }
               } else {
@@ -104,8 +108,8 @@
   return false
}
func TrackOrNot(label map[string]interface{}) bool{
   if label["yolo"] != nil && len(label["yolo"].([]Result)) > 0 {
      for _,res := range label["yolo"].([]Result) {
   if label["yolo"] != nil && len(label["yolo"].([]structure.Result)) > 0 {
      for _,res := range label["yolo"].([]structure.Result) {
         if res.TimeLabel == "10" {
            return true
         }