getTickCount时间单位混乱

时间:2013-05-01 14:07:59

标签: opencv

在Stack上的questionhere on page 52书中的答案中,我发现正常的getTickCount getTickFrequency组合来测量执行时间,以毫秒为单位。然而,OpenCV website表示它的时间以秒为单位。我很迷惑。请帮忙......

2 个答案:

答案 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);
                 }
            }