4

在Stack 和本书第 52 页上的问题的答案中,我发现测量执行时间的正常 getTickCount getTickFrequency 组合给出了以毫秒为单位的时间。然而,OpenCV 网站以秒为单位表示其时间。我很困惑。请帮忙...

4

2 回答 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 回答