我有一个工作的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
提前谢谢。
发布于 2012-01-01 23:30:17
从错误信息判断,这听起来像是你的摄像头驱动程序出了问题。错误消息来自Video4Linux (错误消息中的V4L或V4L2 ),它是包含网络摄像头驱动程序的Linux内核的一部分。收到select()
失败和"not supported by device“错误消息可能意味着您的摄像头没有实现V4L2应用程序接口的这一部分。
您可以通过使用具有已知良好的驱动程序的摄像头测试您的代码来验证这是问题所在。不幸的是,这在内核中包含的摄像头驱动程序中非常常见。它们中的许多都是反向工程的,所以访问视频流是一个相当大的壮举。
发布于 2012-07-23 17:18:45
对于HIGHGUI错误错误,尝试执行以下操作:
export LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so
https://stackoverflow.com/questions/8693534
复制相似问题