视频中的车流量统计
日萌社
?
人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度學習實戰(不定時更新)
CNN:RCNN、SPPNet、Fast RCNN、Faster RCNN、YOLO V1 V2 V3、SSD、FCN、SegNet、U-Net、DeepLab V1 V2 V3、Mask RCNN
自動駕駛:車道線檢測、車速檢測、實時通行跟蹤、基于視頻的車輛跟蹤及流量統計
車流量檢測實現:多目標追蹤、卡爾曼濾波器、匈牙利算法、SORT/DeepSORT、yoloV3、虛擬線圈法、交并比IOU計算
多目標追蹤:DBT、DFT、基于Kalman和KM算法的后端優化算法、SORT/DeepSORT、基于多線程的單目標跟蹤的多目標跟蹤算法KCF
計算交并比IOU、候選框不同表示方式之間的轉換
卡爾曼濾波器
卡爾曼濾波器實踐
目標估計模型-卡爾曼濾波
匈牙利算法
數據關聯:利用匈牙利算法對目標框和檢測框進行關聯
SORT、DeepSORT
多目標追蹤
yoloV3模型
基于yoloV3的目標檢測
叉乘:基于虛擬線圈法的車流量統計
視頻中的車流量統計
4.10. 視頻中的車流量統計
學習目標
- 了解視頻中處理車流量統計的方法
前面我們已經完成了視頻中車輛的檢測功能,下面我們對車輛進行跟蹤,并將跟蹤結果繪制在視頻中。
主要分為以下步驟:
- 對目標進行追蹤
- 繪制車輛計數結果
- 將檢測結果繪制在視頻中并進行保存
1.對目標進行追蹤
# yolo中檢測結果為0時,傳入跟蹤器中會出現錯誤,在這里判斷下,未檢測到目標時不進行目標追蹤if np.size(dets) == 0:continueelse:tracks = tracker.update(dets) # 將檢測結果傳入跟蹤器中,返回當前畫面中跟蹤成功的目標,包含五個信息:目標框的左上角和右下角橫縱坐標,目標的置信度# 對跟蹤器返回的結果進行處理boxes = [] # 存放tracks中的前四個值:目標框的左上角橫縱坐標和右下角的橫縱坐標indexIDs = [] # 存放tracks中的最后一個值:置信度,用來作為memory中跟蹤框的Keyprevious = memory.copy() # 用于存放上一幀的跟蹤結果,用于碰撞檢測memory = {} # 存放當前幀目標的跟蹤結果,用于碰撞檢測# 遍歷跟蹤結果,對參數進行更新for track in tracks:boxes.append([track[0], track[1], track[2], track[3]]) # 更新目標框坐標信息indexIDs.append(int(track[4])) # 更新置信度信息memory[indexIDs[-1]] = boxes[-1] # 將跟蹤框以key為:置信度,value為:跟蹤框坐標形式存入memory中將結果保存在視頻中
# 未設置視頻的編解碼信息時,執行以下代碼if writer is None:# 設置編碼格式fourcc = cv2.VideoWriter_fourcc(*"mp4v")# 視頻信息設置writer = cv2.VideoWriter("./output/output.mp4",fourcc,30,(frame.shape[1], frame.shape[0]),True)# 將處理后的幀寫入到視頻中writer.write(frame)# 顯示當前幀的結果cv2.imshow("", frame)# 按下q鍵退出if cv2.waitKey(1) & 0xFF == ord('q'):break總結
對目標進行追蹤
繪制車輛計數的相關信息
將結果保存在視頻中
總結
- 上一篇: 前端学习(1936)vue之电商管理系统
- 下一篇: 前端学习(1746):前端调试值之时间监