4

我有一个可用的 opencv 代码,它从我的网络摄像头获取信息并显示它。(代码是从这里修改的

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

int fps = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
printf ("Frames per Second: %d\n",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

提前致谢。

4

2 回答 2

2

从错误消息来看,这听起来像是您的网络摄像头驱动程序有问题。错误消息来自 Video4Linux(错误消息中的 V4L 或 V4L2),它是包含网络摄像头驱动程序的 Linux 内核的一部分。出现select()故障和“设备不支持”错误消息可能意味着您的网络摄像头没有实现 V4L2 API 的这一部分。

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

于 2012-01-01T15:30:16.757 回答
0

试试这个 HIGHGUI ERROR 错误:

export LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so
于 2012-07-23T09:18:44.740 回答