【OpenCV】解決樹莓派讀取4個USB攝像頭數據報錯問題


背景

我們在一個工廠智能化改造中,使用了樹莓派連接4個USB攝像頭,進行取圖和分析,但是在調試過程中,發現總是只能讀取一個攝像頭數據,其他攝像頭都顯示timeout。

問題現象

opencv版本:4.5.5.62

cap_v4l.cpp (1000) tryIoctl VIDEOIO(V4L2:/dev/video2): select() timeout.
cap_v4l.cpp (1000) tryIoctl VIDEOIO(V4L2:/dev/video4): select() timeout.
cap_v4l.cpp (1000) tryIoctl VIDEOIO(V4L2:/dev/video6): select() timeout.

解決辦法

前提:確保usb供電充足,我們使用了一個帶有額外供電的usb hub解決供電問題。
將所有攝像頭的初始化操作由

cap = cv2.VideoCapture(0)

改為

cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280.0)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720.0)
cap.set(cv2.CAP_PROP_FOURCC,cv2.VideoWriter_fourcc('M','J','P','G'))

即可解決


免責聲明!

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



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