在Stack上的question和here on page 52书中的答案中,我发现正常的getTickCount getTickFrequency组合来测量执行时间,以毫秒为单位。然而,OpenCV website表示它的时间以秒为单位。我很迷惑。请帮忙......
答案 0 :(得分:20)
没有混淆的余地,你所提到的所有参考都指向同一件事。
getTickCount
在某个事件发生后,例如机器开机后,为您提供时钟周期数。
A = getTickCount() // A = no. of clock cycles from beginning, say 100
process(image) // do whatever process you want
B = getTickCount() // B = no. of clock cycles from beginning, say 150
C = B - A // C = no. of clock cycles for processing, 150-100 = 50,
// it is obvious, right?
现在您想知道这些时钟周期的秒数。为此,您想知道单个时钟需要多少秒,即 clock_time_period 。如果您发现这一点,只需乘以50即可获得总时间。
为此,OpenCV提供了第二个函数getTickFrequency()
。它为您提供频率,即每秒钟的时钟周期数。你拿它的倒数得到时钟的时间段。
time_period = 1/frequency.
现在您有一个时钟周期的 time_period ,将其乘以50以获得所花费的总时间。
现在阅读你再次提供的所有参考资料,你会得到它。
答案 1 :(得分:-1)
dwStartTimer=GetTickCount();
dwEndTimer=GetTickCount();
while((dwEndTimer-dwStartTimer)<wDelay)//delay is 5000 milli seconds
{
Sleep(200);
dwEndTimer=GetTickCount();
if (PeekMessage (&uMsg, NULL, 0, 0, PM_REMOVE) > 0)
{
TranslateMessage (&uMsg);
DispatchMessage (&uMsg);
}
}