opencv筆記(三十五)——測試一幀影象的處理時間
阿新 • • 發佈:2018-12-26
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