cvGetCaptureProperty在opencv上的问题

an issue with cvGetCaptureProperty on opencv

本文关键字:问题 opencv cvGetCaptureProperty      更新时间:2023-10-16

我有一个工作的opencv代码,从我的网络摄像头获取饲料并显示它。(代码是根据这里的

修改的)

唯一的问题是,当我试图打印每秒帧数的值时,如

int fps = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
printf ("Frames per Second: %dn",fps);
输出

-1

另一个(侧面)问题是,似乎有一些运行时错误/警告

VIDIOC_QUERYMENU: Invalid argument
VIDIOC_QUERYMENU: Invalid argument
select timeout
HIGHGUI ERROR: V4L2: Unable to get property <unknown property string>(5) - Invalid argument
HIGHGUI ERROR: V4L: Property <unknown property string>(2) not supported by device
HIGHGUI ERROR: V4L2: Unable to get property <unknown property string>(1) - Invalid argument
HIGHGUI ERROR: V4L: Property <unknown property string>(2) not supported by device

但是代码做了它应该做的事情,即显示来自网络摄像头的视频。

有什么办法可以解决这些问题吗?我在Eclipse上使用opencv,在Ubuntu 11.10上使用CDT

从错误信息判断,这听起来像是您的网络摄像头驱动程序的问题。错误消息来自Video4Linux(错误消息中的V4L或V4L2),这是包含网络摄像头驱动程序的Linux内核的一部分。获得select()失败和"设备不支持"错误消息可能意味着您的网络摄像头没有实现V4L2 API的这一部分。

您可以通过使用具有已知良好驱动程序的相机测试您的代码来验证这是问题。不幸的是,这在内核中包含的网络摄像头驱动程序中非常常见。其中很多都是逆向工程的,所以仅仅访问视频流是相当了不起的。

试试下面的HIGHGUI ERROR错误:

export LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so