我有一台V4L2相机,可以抓取JPEG格式的帧或YUV422或BGR24。我想通过OpenCV将相机设置为BGR24 @ 640x480。为此,我进行了以下设置:
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 @ 640x480格式而不是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 :(得分:0)
我会检查您是否正在访问正确的相机
如果你有多个摄像机,cvCreateCameraCapture(N)
中的N应该循环通过它们。
除此之外,我会检查网络摄像头本身是否符合UVC规范。 V4L可能无法查询凸轮的参数。
仅仅因为相机支持捕获某种格式,如果它不严格符合Usb视频类,OpenCV无法保证能够检测到它可以以该格式捕获,并且最好是我的知识,不能被迫。