2012-11-07 106 views
1

我有一個V4L2相機,可以抓取JPEG格式的幀或YUV422或BGR24。我想通過OpenCV將相機設置爲BGR24 @ 640x480。要做到這一點,我做了如下設置:如何使用OpenCv設置BGR24格式?

capture = cvCreateCameraCapture(0); 
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, 640); 
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, 480); 
cvSetCaptureProperty(capture, CV_CAP_PROP_FOURCC, CV_FOURCC('B', 'G', 'R', '3')); 

但OpenCV中給了我回來了以下錯誤消息:

HIGHGUI ERROR: V4L: Property <unknown property string>(6) not supported by device 

所以,OpenCV的設置JPEG @ 640×480格式,而不是BGR24。 我該如何解決它?

注:BGR24格式與下面的GStreamer管線測試,它工作正常:

gst-launch-0.10 v4l2src num-buffers=10 device=/dev/video0 ! 'video/x-raw-rgb,width=640,height=480,bpp=24,depth=24,red_mask=255,green_mask=65280,blue_mask=16711680,endianness=4321' ! filesink location=/tmp/output10.rgb24 

親切的問候

回答

0

我會檢查你進入正確的相機

如果您在cvCreateCameraCapture(N)中應該有多個攝像機在N中循環。

除此之外,我會檢查網絡攝像頭本身是否符合UVC規範。 V4L可能無法查詢凸輪的參數。

僅僅因爲相機支持捕獲某種格式,如果它不嚴格遵守Usb視頻類,OpenCV不能保證能夠檢測到它可以以該格式捕獲,並且最好我的知識,不能被迫。

+0

謝謝@Totero,我一定會使用/ dev/video0,因爲我沒有任何其他插入式相機。我的V4L2相機不是基於UVC,因爲我爲它製作了驅動程序(它不是USB相機,它基於微控制器相機接口)。你確定CV_CAP_PROP_FOURCC調用標準UVC設置(而不是V4L2 ioctls)嗎? – aldo85ita

+0

對於USB設備,V4L2調用UVC(http://www.kernel.org/doc/Documentation/video4linux/uvcvideo.txt) – Totero

+0

但是看到你的相機不是USB--這是我的一個可憐的假設......然後我會說V4L和您的自定義驅動程序之間存在明確的問題。你的openCV代碼是正確的。也許你應該把這個問題重新發布爲驅動程序問題(這裏和dsp堆棧),也許有人已經遇到了這個問題。 – Totero

相關問題