1. 程式人生 > >opencv筆記(三十五)——測試一幀影象的處理時間

opencv筆記(三十五)——測試一幀影象的處理時間

timeGetTime()函式

函式以 毫秒 計的系統時間。該時間為從系統開啟算起所經過的時間
在SDK中,可以用 DWORD timeGetTime(VOID)函式獲取系統時間,其返回值是毫秒單位的。可以用其實現延時功能的函式。

 void Delay(DWORD delayTime)
    {
        DWORD delayTimeBegin;
        DWORD delayTimeEnd;
        delayTimeBegin = timeGetTime();
        do{delayTimeEnd = timeGetTime();}
        while(delayTimeEnd - delayTimeBegin < delayTime)
    }

注:在使用timeGetTime()函式之前應

1)先包含標頭檔案#include <Mmsystem.h>#include <Windows.h>

並在project->settings->link->Object/library modules中新增winmm.lib(可不做)
2)也可以在檔案頭部新增 #pragma comment( lib,"winmm.lib" )

解釋:
命令列:#pragma comment( lib,"xxx.lib" )時預編譯處理指令,讓vc將winmm.lib新增到工程中去進行編譯。

備註:

  • 該函式與timeGetSystemTime()函式的唯一不同是timeGetSystemTime()函式使用MMTIME結構返回系統時間。TimeGetSystemTime()比timeGetTime()需要更多的系統開銷。注意timeGetTime()函式是一個雙字。這個值在0到2^32之間。大約49.71天。如果在程式碼中直接將該值用於計算,會導致一些問題,特別是用該值來控制程式碼的執行。一般利用兩個timeGetTime()函式返回值的不同來用於計算。
  • Windows NT:該函式的時間精度是五毫秒或更大一些,這取決於機器的效能。
  • 可用timeBeginPeriod和timeEndPeriod函式提高timeGetTime函式的精度。如果使用了,連續呼叫timeGetTime函式,一系列返回值的差異由timeBeginPeriod和timeEndPeriod決定。
  • QueryPerformanceCounter QueryPerformanceFrequency函式用於解析度要求更高的時間測量。
  • Windows95 預設解析度是1毫秒,無論是否呼叫timeBeginPeriod和timeEndPeriod函式。

參考文章:

timeGetTime()函式的用法 https://blog.csdn.net/hbtj_1216/article/details/50503284

cv::getTickCount()與GetTickCount()的區別 https://blog.csdn.net/flyyufenfei/article/details/79207842