cv2.VideoCapture(0)從攝像頭獲取視頻流並處理但是處理速度慢

cv2.VideoCapture從攝像頭獲取視頻流並處理但是處理速度慢

在做深度學習視覺相關項目的時候,經常會遇到無法做到實時的情況。比如處理一幀圖像要3s,但是攝像頭採集的視頻裏在這3s內,可能已經讀了好幾十幀(假如fps是20)。那麼處理完這一幀之後,下一次cap.read()返回的是第二幀還是第62幀。

source:Opencv讀取攝像頭緩衝區擁塞,有延遲情況下,處理最新幀的方法
實際上Opencv的videocapture讀取攝像頭時,攝像頭的每幀數據會全部存入緩衝區,每次cap.read()都是從緩衝區裏取出一幀數據。如果你的處理速度小於存進緩衝區的速度,那麼緩衝區的圖片就越積累越多,而你處理的圖片可能是攝像頭拍攝的好幾秒前的數據。

一般這種情況下,如果實在不能提升處理速度,那就只能嘗試其他方法了,比如:

  • 多線程
  • 在要求不那麼嚴格的情況下,採用跳幀處理的方法。每隔一定的幀數處理一次。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章