opencv 計時
我們知道opencv中 有時候需要知道 算法的執行時間 ,來衡量算法的優劣性,那麼opencv 怎樣進行計時呢?opencv中主要用兩個函數來進行計時操作,這兩個計時函數便是:getTickCount() 和getTickFrequency()
下面我們詳細講解getTickCount ()和 getTickFrequency()及其怎麼使用它們來對算法進行計時
1.什麼是getTickCount()函數? 什麼是 getTickFrequency?
getTickCount()函數返回CPU 自某個事件(如啓動電腦)以來走過的時鐘週期數
getTickFrequency()函數返回CPU一秒鐘所走得時鐘週期數
2.我們怎麼使用 getTickCount()函數 和getTickFrequency()函數 來獲得算法的執行時間呢?
將getTickCount() 和getTickFrequency()組合起來可以很輕鬆地獲取算法的執行時間(注意是以秒爲單位),使用實例如下:
double time1 = static_cast( getTickCount() );//記錄算法的起始時間
//執行某種算法步驟……
double time2 =
( static_cast( getiTickCount()) - time1)/ getTickFrequency();
// time2 爲算法執行的時間
使用代碼來驗證程序:
這//opencv 中如何進行程序的計時呢?
#include<opencv2/opencv.hpp>
using namespace cv;
#include<iostream>
using namespace std;
int main(void){
//查看opencv 讀取一張圖像所需要的時間
double time1 = static_cast<double>( getTickCount());//記錄起始時間,其中getTickCount()函數返回CPU 自某個事件(如啓動電腦)以來走過的時鐘週期數
Mat img = imread("E:/testpicture/crystal.jpg");//通過絕對路徑從指定文件夾 讀取一張名字爲 crystal的 圖像,圖像格式爲 .jpg 注意讀取圖像必須指定格式
double time2 = (static_cast<double>( getTickCount()) - time1)/getTickFrequency();//獲得了讀取一張圖像所需的時間單位爲秒。 其中getTickFrequency()函數返回CPU一秒鐘所走得時鐘週期數。
cout<<"從文件中讀取一張圖像的時間是:"<< time2 <<"秒"<<endl;//輸出運行時間
return 0;
}裏寫代碼片
下面是程序運行的結果