在Stack 和本书第 52 页上的问题的答案中,我发现测量执行时间的正常 getTickCount getTickFrequency 组合给出了以毫秒为单位的时间。然而,OpenCV 网站以秒为单位表示其时间。我很困惑。请帮忙...
问问题
14694 次
2 回答
23
没有混淆的余地,您给出的所有参考都指向同一件事。
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 得到以秒为单位的总时间。
现在再次阅读您提供的所有参考资料,您会明白的。
于 2013-05-01T16:34:15.327 回答
-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);
}
}
于 2017-08-31T06:57:38.917 回答