cvqueryframe()如何根据设置的帧速率从摄像机中检索帧?

时间:2014-02-13 08:55:07

标签: opencv frame-rate

我想知道cvQueryFrame()如何以先前设置的帧速率捕获和提供帧。

在我的程序中,我在while(1)循环的每次迭代开始时捕获一个新帧。我已将帧速率设置为每秒1帧。因此,完成一次交互所需的时间应为1秒或更长。但是当我使用cvGetTickCount()函数计算每次迭代的时间时,它显示每次迭代花费的时间为250ms到350ms。

这会影响我的其他条件,具体取决于时间。 我怀疑cvQueryFrame()根据设置的帧速率不起作用。

谁能告诉我这可能是什么原因?

1 个答案:

答案 0 :(得分:0)

getTickCount计算 cpu time ,也仅针对当前线程。 (所以当你说'睡眠'命令或做任何io时,它都不会以这种方式计算)

要正确计算fps,你需要另一种计时器,它会计算墙壁时间(不幸的是,我们在这里得到了很多os依赖)。

此外,它可能几乎是凸轮驱动程序未正确遵守您请求的帧速率。

整个highgui框架更多是为了“易用性”而制作的......

哦,顺便说一下,请转到c ++ api。他们停止开发你4年前已经使用的旧c-api,它只用于维护,你可能不应该开发任何新东西。