opencv 設置攝像頭采集圖像編碼格式


問題:

新到的攝像頭在windows下用opencv打開,設置分辨率為3840*2160,輸出圖像基本為實時。在linux下用opencv打開,同樣分辨率。輸出圖像fps降到了1 。

原因:

視頻輸出格式為yuv時,幀率只有1。只有在輸出格式為mjpg時,幀率才為實時。

為什么呢?
因為其中有一個瓶頸:
輸出fps=30,yuv格式的4k視頻,所需的數據傳輸速率為30 f/s * 3840*2160 Byte / 2 = 124416000 Byte/s = 118MB/s

而USB2.0的傳輸速率:

2000年制定的USB 2.0標准是真正的USB 2.0,被稱為USB 2.0的高速(High-speed)版本,理論傳輸速度為480 Mbps,即60 MB/s,但實際傳輸速度一般不超過30 MB/s,采用這種標准的USB設備也比較多。

解決:

import cv2
cap = cv2.VideoCapture(0, cv2.CAP_V4L1)
cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'))

MJPG 格式是motion jpeg,也就是將視頻的每一幀都按照jpg格式壓縮了,數據量大大降低。然而還有一個問題是,不知道默認的圖像質量是多少,可不可以設置。后面需要的時候再研究吧。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM