QueryFrame在Windows上非常慢

时间:2012-06-04 20:23:59

标签: python windows performance opencv

我在linux上构建了一个简单的网络摄像头,效果很好。 我得到了~25fps的视频和良好的音频。

我在Windows(win7)上移植录像机,当它工作时,无法使用。 QueryFrame函数需要超过350毫秒,即2.5fps。

代码在python中,但问题实际上似乎是lib调用。

我使用相同的网络摄像头(罗技E2500)在同一台机器上进行了测试。 在Windows上,我安装了openCV v2.2。我现在无法检查,但Ubuntu上的版本可能会高一些。

知道可能是什么问题吗?

编辑:我刚刚安装了openCV2.4并且速度相同。

2 个答案:

答案 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驱动程序增加曝光以增加图像亮度的情况。尝试将相机对准光源或手动设置减少曝光