opencv 計時函數

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;
}裏寫代碼片

下面是程序運行的結果這裏寫圖片描述

發佈了31 篇原創文章 · 獲贊 15 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章