問題
筆者使用的是USB攝像頭。
如果你使用的是CSI攝像頭,vcgencmd get_camera
命令可能能夠幫到你。希望讀取高幀率可以看看CSDN-樹莓派ARM64系統(tǒng)中如何設(shè)置opencv-python讀取高清攝像頭畫面
如果你使用的是USB攝像頭,vcgencmd get_camera
命令會出現(xiàn)supported=1 detected=0
的提示,這是正常的。同時,raspistill庫不支持USB攝像頭,不能使用該庫也是正常的。
之前在樹莓派上一直使用的30fps的低幀率攝像頭,所以一直沒有發(fā)現(xiàn)opencv不能設(shè)置攝像頭的幀率和分辨率,一直跑的是320x240,30fps
最近更換了一個在640x480下180fps,在1280x720下90fps的攝像頭才發(fā)現(xiàn)opencv怎么都不能更改攝像頭的分辨率,并且就算是在默認(rèn)的320x240分辨率下也只有30fps
解決過程
需要直接看解決方案請下拉,這里的內(nèi)容如果不全看完可能會誤導(dǎo)
1.用fswebcam拍照,嘗試攝像頭在樹莓派上是否能切換到1280x720
安裝:sudo apt-get install fswebcam
使用:fswebcam --no-banner -r 1280x720 -q img.jpg
發(fā)現(xiàn)能夠保存下來一張1280x720分辨率的圖片,說明攝像頭調(diào)整分辨率沒問題
fswebcam命令參數(shù)使用見 CSDN-樹莓派使用攝像頭——fswebcam
2.用luvcview顯示攝像頭畫面
安裝:sudo apt-get install luvcview
使用:luvcview -s 1280x720
可以看到分辨率顯示正確,但是幀率只有7幀左右
另外,命令輸出中顯示設(shè)置格式為MJPG,設(shè)置分辨率為1280x720,設(shè)置幀率為90fps,沒有問題
解決方案
偶然看見一篇文章說是視頻讀取格式導(dǎo)致幀率過低,嘗試一下發(fā)現(xiàn)可以輸出高幀率了。
大部分?jǐn)z像頭支持YUY2和MJPG兩種格式,而使用YUY2格式時因為數(shù)據(jù)量較大,可能幀率會較低,所以需要切換成MJPG格式輸出。
- 筆者在windows上使用opencv讀取這個攝像頭可以不需要修改視頻格式就能到高幀率,猜測可能在windows上opencv默認(rèn)讀取MJPG格式,而在樹莓派上opencv默認(rèn)讀取YUY2格式
opencv中的cap.set()
函數(shù)可以對攝像頭進行設(shè)置,部分參數(shù)如下
值 | 參數(shù) | 作用 |
---|---|---|
3 | CV_CAP_PROP_FRAME_WIDTH | 寬 |
4 | CV_CAP_PROP_FRAME_HEIGHT | 高 |
6 | CV_CAP_PROP_FOURCC | 4個字符表示的視頻編碼器格式 |
使用cap.set(6,cv2.VideoWriter.fourcc('M','J','P','G'))
函數(shù)即可將視頻格式切換成MJPG格式,
修改后進行攝像設(shè)置的代碼為:文章來源:http://www.zghlxwxcb.cn/news/detail-448839.html
cap.set(6,cv2.VideoWriter.fourcc('M','J','P','G'))
cap.set(3,1280)
cap.set(4,720)
參考的兩篇博客:
CSDN-Python opencv 調(diào)用攝像頭時設(shè)置以MJPG等編碼格式獲取視頻
CSDN-Python+Opencv讀取高幀率USB攝像頭問題文章來源地址http://www.zghlxwxcb.cn/news/detail-448839.html
到了這里,關(guān)于【CV】樹莓派+OpenCV-python解決攝像頭分辨率及幀率過低無法調(diào)整問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!