1

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

我正在将记录器移植到 Windows (win7) 上,虽然它可以工作,但它无法使用。QueryFrame 函数需要超过 350 毫秒的时间,即 2.5fps。

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

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

知道可能是什么问题吗?

编辑:我刚刚安装了openCV2.4,速度也一样慢。

4

2 回答 2

1

我有同样的问题,我发现这是由于长时间暴露造成的。可能是 Windows 驱动程序增加曝光以增加图像亮度。尝试将相机对准光源或手动设置减少曝光

于 2012-10-03T00:00:24.957 回答
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。=)

于 2012-06-04T21:07:06.540 回答