2012-01-01 90 views
4

我有一个工作的opencv代码,它从我的网络摄像头获取提要并显示它。 (该代码是从所述一个hereopencv上的cvGetCaptureProperty问题

改性的唯一问题是,当我尝试打印帧每秒值,如

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 

但代码做什么它应该做的,从摄像头即显示视频。

任何想法如何解决这些问题?我在Ubuntu上使用Eclipse上的opencv和CDT 11.10

在此先感谢。

回答

2

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

您可以通过使用具有已知良好驱动程序的相机测试代码来验证是否存在问题。不幸的是,这在内核中包含的摄像头驱动程序中非常常见。它们中的很多都是反向设计的,所以它只是访问视频流而已。

+0

感谢,但后来怎么样FPS的值-1?有关于此的任何想法? – wrahool 2012-01-01 16:04:59

+0

您列出的错误消息不是“侧面问题;”他们实际上是问题的根源。 OpenCV无法查询驱动程序的FPS(导致错误消息),所以它返回一个错误代码(-1)。我不确定OpenCV文档为什么说错误代码应该是0;这可能是一个错误或文档已过期。 – 2012-01-01 16:17:51

+0

我明白了。谢谢。 – wrahool 2012-01-01 16:46:10

0

试试这个为HIGHGUI错误错误:

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

你应该解释一下 – 2012-10-01 23:41:37