如何使用OpenCv设置BGR24格式?
我有一个V4L2相机,可以抓取JPEG格式或YUV422或BGR24格式的帧。我想把相机调到BGR24@640x480通过OpenCV。为此,我进行了以下设置:如何使用OpenCv设置BGR24格式?,opencv,v4l2,bgr,Opencv,V4l2,Bgr,我有一个V4L2相机,可以抓取JPEG格式或YUV422或BGR24格式的帧。我想把相机调到BGR24@640x480通过OpenCV。为此,我进行了以下设置: capture = cvCreateCameraCapture(0); cvSetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH, 640 ); cvSetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT, 480 ); cvSetC
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
问候您我会检查您是否使用了正确的摄像头 如果在
cvCreateCameraCapture(N)
中有多个不同N的摄影机,则应在它们之间循环
除此之外,我会检查网络摄像头本身是否符合UVC规范。V4L可能在查询凸轮参数时遇到问题
仅仅因为相机支持某种格式的捕获,如果它不严格遵守Usb视频类,OpenCV就不能保证能够检测到它能够以那种格式捕获,而且据我所知,不能强迫它这样做 谢谢@Totero,我肯定会使用/dev/video0,因为我没有任何其他插入式摄像头。我的V4L2摄像头不是基于UVC的,因为我为它构建了驱动程序(它不是USB摄像头,它基于微控制器摄像头接口)。你确定CV_CAP_PROP_FOURCC调用标准UVC设置(而不是V4L2 IOCTL)吗?对于USB设备,V4L2调用UVC(),但看到你的相机不是USB的-我的假设很差。。。那么我想说的是,V4L和您的自定义驱动程序之间存在一个明确的问题。您的openCV代码是正确的。也许你应该把这个问题作为一个驱动程序问题(在这里和dsp堆栈上)重新发布,也许有人已经遇到了这个问题。V4L2应该比UVC更通用:它可以处理不同类型的相机(不仅仅是USB)。UVC只是V4L2的一个子层,它只能与USB一起工作。是的。这是正确的。我再次为假设你的相机是USB而道歉。但在我的评论中,我确实指定了“用于USB设备”。我肯定会把这个问题作为一个关于自定义驱动程序和V4L的问题来回答。这里没有OpenCV问题。
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