panlei
2019-11-30 371eec6fc2618458e037affaf646ff83e6887e63
ruleserver/personTrack.go
@@ -30,7 +30,7 @@
// 检查是否前后两次的数据id是否完全相同(人脸)
func FaceIsSame(msg *protomsg.SdkMessage) {
   logger.Debug("+++++++++++++++++++++人脸追踪开始+++++++++++++++摄像机id为:", msg.Cid, "---缓存池为:", TrackPond)
   //logger.Debug("+++++++++++++++++++++人脸追踪开始+++++++++++++++摄像机id为:", msg.Cid, "---缓存池为:", TrackPond)
   for _, sdkinfo := range msg.Tasklab.Sdkinfos { // 遍历各算法的sdkData
      if sdkinfo.Sdktype == "FaceDetect" { // 人脸检测
         if len(sdkinfo.Sdkdata) > 1 {
@@ -58,12 +58,12 @@
         }
      }
   }
   logger.Debug("--------------------------------人脸追踪结束--------------------------------------")
   //logger.Debug("--------------------------------人脸追踪结束--------------------------------------")
}
//  追踪人体,检查数量是否一致
func BodyIsSame(args *structure.SdkDatas,msg *protomsg.SdkMessage) bool{
   logger.Debug("+++++++++++++++++++++人体追踪开始+++++++++++++++摄像机id为:", msg.Cid, "---缓存池为:", TrackPond)
   //logger.Debug("+++++++++++++++++++++人体追踪开始+++++++++++++++摄像机id为:", msg.Cid, "---缓存池为:", TrackPond)
   for _, sdkinfo := range msg.Tasklab.Sdkinfos { // 遍历各算法的sdkData
      if sdkinfo.Sdktype == "Yolo" {
         if len(sdkinfo.Sdkdata) > 1 {
@@ -79,11 +79,11 @@
                  yoloNum++
               }
            }
            if TrackPond[msg.Cid] != nil {
               logger.Info("================追踪之前yolo的个数:", yoloNum, "现在缓存池中记录的个数:", TrackPond[msg.Cid].Yolo)
            } else {
               logger.Info("================追踪之前yolo的个数:", yoloNum, "还没有这个摄像机的缓存")
            }
            //if TrackPond[msg.Cid] != nil {
            //   logger.Info("================追踪之前yolo的个数:", yoloNum, "现在缓存池中记录的个数:", TrackPond[msg.Cid].Yolo)
            //} else {
            //   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)
@@ -115,7 +115,7 @@
         }
      }
   }
   logger.Debug("---------------------------------人体追踪结束--------------------------------------")
   //logger.Debug("---------------------------------人体追踪结束--------------------------------------")
   return false
}
@@ -210,7 +210,7 @@
// 检查是否前后两次的数据id是否完全相同(人脸)
func CarIsSame(msg *protomsg.SdkMessage) {
   logger.Debug("+++++++++++++++++++++车辆追踪开始+++++++++++++++摄像机id为:", msg.Cid, "---缓存池为:", TrackPond)
   //logger.Debug("+++++++++++++++++++++车辆追踪开始+++++++++++++++摄像机id为:", msg.Cid, "---缓存池为:", TrackPond)
   for _, sdkinfo := range msg.Tasklab.Sdkinfos { // 遍历各算法的sdkData
      if sdkinfo.Sdktype == "Plate" { // 人脸检测
         if len(sdkinfo.Sdkdata) > 1 {
@@ -218,11 +218,11 @@
            FaceIsInPond(msg.Cid, sdkinfo)
         } else {
            if num > 0 { // 连续num次没有数据才算是没有数据,不然只算作丢帧
               logger.Info("我认为你只是丢帧了,此时的num值为:", num)
               //logger.Info("我认为你只是丢帧了,此时的num值为:", num)
               num--
            } else {
               if TrackPond[msg.Cid] != nil {
                  logger.Info("如果不为空:", TrackPond[msg.Cid])
                  //logger.Info("如果不为空:", TrackPond[msg.Cid])
                  lock.Lock()
                  TrackPond[msg.Cid].Cars = nil
                  lock.Unlock()
@@ -230,15 +230,15 @@
                  lock.Lock()
                  TrackPond[msg.Cid] = &PersonTrack{Cars: nil}
                  lock.Unlock()
                  logger.Info("如果为空:", TrackPond[msg.Cid])
                  //logger.Info("如果为空:", TrackPond[msg.Cid])
               }
               logger.Info("摄像机:" + msg.Cid + "-没有车辆,被重置为空")
               //logger.Info("摄像机:" + msg.Cid + "-没有车辆,被重置为空")
               continue
            }
         }
      }
   }
   logger.Debug("--------------------------------车辆追踪结束--------------------------------------")
   //logger.Debug("--------------------------------车辆追踪结束--------------------------------------")
}