我想知道cvQueryFrame()如何以先前设置的帧速率捕获和提供帧。
在我的程序中,我在while(1)循环的每次迭代开始时捕获一个新帧。我已将帧速率设置为每秒1帧。因此,完成一次交互所需的时间应为1秒或更长。但是当我使用cvGetTickCount()函数计算每次迭代的时间时,它显示每次迭代花费的时间为250ms到350ms。
这会影响我的其他条件,具体取决于时间。 我怀疑cvQueryFrame()根据设置的帧速率不起作用。
谁能告诉我这可能是什么原因?
答案 0 :(得分:0)
getTickCount计算 cpu time ,也仅针对当前线程。 (所以当你说'睡眠'命令或做任何io时,它都不会以这种方式计算)
要正确计算fps,你需要另一种计时器,它会计算墙壁时间(不幸的是,我们在这里得到了很多os依赖)。
此外,它可能几乎是凸轮驱动程序未正确遵守您请求的帧速率。
整个highgui框架更多是为了“易用性”而制作的......
哦,顺便说一下,请转到c ++ api。他们停止开发你4年前已经使用的旧c-api,它只用于维护,你可能不应该开发任何新东西。