我有一个工作的opencv代码,从我的网络摄像头获取信息并显示它. (代码从
here修改
唯一的问题是,当我尝试打印每秒帧数值时,如
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
提前致谢.
最佳答案 从错误消息判断,这听起来像您的网络摄像头驱动程序的问题.错误消息来自Video4Linux(错误消息中的V4L或V4L2),它是包含网络摄像头驱动程序的Linux内核的一部分.获取select()失败和“设备不支持”错误消息可能意味着您的网络摄像头没有实现V4L2 API的这一部分.
您可以通过使用具有已知良好驱动程序的相机测试代码来验证这是否是问题.不幸的是,这在内核中包含的网络摄像头驱动程序中非常常见.其中许多是逆向工程,所以只需访问视频流就可以了.