2015-06-17 30 views
1

嘿,我下面的德里克·莫洛伊的教程:Beaglebone黑色視頻捕獲:錯誤「選擇超時」

http://derekmolloy.ie/beaglebone/beaglebone-video-capture-and-image-processing-on-embedded-linux-using-opencv/#comment-30209

使用羅技C310網絡攝像頭,這是由Linux UVC驅動程序支持。

[email protected]:/boneCV# v4l2-ctl --all 
Driver Info (not using libv4l2): 
     Driver name : uvcvideo 
     Card type  : UVC Camera (046d:081b) 
     Bus info  : usb-musb-hdrc.1.auto-1 
     Driver version: 3.8.13 
     Capabilities : 0x84000001 
       Video Capture 
       Streaming 
Format Video Capture: 
     Width/Height : 640/480 
     Pixel Format : 'YUYV' 
     Field   : None 
     Bytes per Line: 1280 
     Size Image : 614400 
     Colorspace : SRGB 
Crop Capability Video Capture: 
     Bounds  : Left 0, Top 0, Width 640, Height 480 
     Default  : Left 0, Top 0, Width 640, Height 480 
     Pixel Aspect: 1/1 
Video input : 0 (Camera 1: ok) 
Streaming Parameters Video Capture: 
     Capabilities  : timeperframe 
     Frames per second: 30.000 (30/1) 
     Read buffers  : 0 
Priority: 2 

所以我們可以看到它被Beagleboard讀取沒有問題。 當我試圖捕獲視頻,我只是得到這個錯誤:

[email protected]:/boneCV# ./capture -f -c 600 -o > output.raw 
Force Format 1 
select timeout 

綜觀其他線程,人們似乎不知道如何回答這個問題,任何人都可以用在這個項目上的經驗幫助我?

回答

0

那麼我可以說這個問題已解決。在幾個小時後重新啓動並再次嘗試照相機後,它神奇地似乎工作。

我唯一改變的是捕獲調用更簡單,現在是:

./capture -o > output.raw 

我還沒有轉換的原始文件,但MPEG4,因爲我安裝的ffmpeg在我鍵入這一點,但是我可以確認抓取靜止圖像正在工作。 output.raw的文件大小是確認它確實捕獲視頻。如果有人發現這一點並且卡住了,我會很樂意儘可能地給予幫助。

奇怪的是,它似乎只是先使用圖像採集卡程序捕獲視頻。所以一定有抓取器正在初始化的東西不會在捕獲中發生。

更新:好吧,事實證明,YUYV視頻模式不工作,但mjpeg,把它放入抓取模式初始化mjpeg模式,這就是爲什麼它的工作原理。不知道爲什麼YUYV不工作。

0

如果您比較YUYV和MJPEG的圖像大小,您會注意到前者比後者大得多。 BBB的USB端口帶寬有限,這就是爲什麼您無法使用YUYV格式操作相機。 MJPEG輸出壓縮的視頻流。不同的opencv版本傾向於更改您使用v4l2-ctl命令設置的分辨率,因此您必須更改boneCV代碼中的分辨率。我不確定它是如何在C++中完成的,但在python中,請檢查Changing camera resolution in opencv code。據Matthew,Bandwidth limitations他測試並發現帶寬爲13.2MB/s。