1

我有一个 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

亲切的问候

4

1 回答 1

0

我会检查您是否访问了正确的相机

如果您有多个不同 N in 的摄像机,cvCreateCameraCapture(N)则应在它们之间循环。

除此之外,我会检查网络摄像头本身是否符合 UVC 规范。V4L 可能无法查询凸轮的参数。

仅仅因为Camera支持某种格式的采集,如果它不严格遵守Usb Video Class,OpenCV不能保证能够检测到它可以采集该格式,据我所知,不能强迫。

于 2012-11-07T10:36:30.307 回答