1. 程式人生 > >關於linux呼叫多個usb攝像頭時無法工作的問題

關於linux呼叫多個usb攝像頭時無法工作的問題

問題

在做雙目時遇到一個問題:插一個USB攝像頭可以正常讀取資料,插兩個就會有一個沒資料,另一個攝像頭的幀率也會嚴重影響.排除硬體故障和程式碼問題後,最大的可能性是usb控制器頻寬被佔滿導致讀取資料時出錯.

解決方案

  1. 輸入lsusb檢視電腦有幾個usb控制器.若是攝像頭掛載在同一個bus下,就拔了一個換另一個usb口,確保攝像頭掛載在不同的bus下.
  2. 若是電腦只有一個usb bus(例如樹莓派),那還是可以挽救的.一般免驅的usb攝像頭都是v4l2裝置,在開啟裝置的時候不要選擇YUV或者RGB這些沒被壓縮的格式,選擇mjpeg(如果攝像頭支援的話)或者其他壓縮過的格式可以大大減小頻寬佔用.一張640*480,YUYV422的圖片大小為600k左右,而壓縮成mjpeg後大概只有20到60k,極大減小了頻寬的佔用!