我在linux上构建了一个简单的网络摄像头,效果很好。 我得到了~25fps的视频和良好的音频。
我在Windows(win7)上移植录像机,当它工作时,无法使用。 QueryFrame函数需要超过350毫秒,即2.5fps。
代码在python中,但问题实际上似乎是lib调用。
我使用相同的网络摄像头(罗技E2500)在同一台机器上进行了测试。 在Windows上,我安装了openCV v2.2。我现在无法检查,但Ubuntu上的版本可能会高一些。
知道可能是什么问题吗?
编辑:我刚刚安装了openCV2.4并且速度相同。
答案 0 :(得分:1)
如果问题确实存在于QueryFrame
我怀疑可能会发生以下情况:相机的Windows驱动程序以OpenCV本身不支持的格式检索帧,因此OpenCV被强制转换为帧到它理解的格式。此操作会消耗CPU,如果帧的大小很大,您会发现性能损失。
出于测试目的,您可以:
1)为框架设置较小的尺寸,看看它是否能提高性能:
cvSetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH, 320);
cvSetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT, 240);
2)使用其他相机查看问题是否消失。
一旦确定这确实是正在发生的事情,请尝试查找驱动程序的更新,并希望它解决问题,或者停止使用Windows。 =)
答案 1 :(得分:1)
我有同样的问题,我发现这是由于长时间接触造成的。可能是Windows驱动程序增加曝光以增加图像亮度的情况。尝试将相机对准光源或手动设置减少曝光