作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处
场景需求
使用OpenCV时,如果有计时的需求,就记住两个函数cv::getTickCount和cv::getTickFrequency,应用非常简单也方便记忆,C++中有多种多样的计时方法,选择自己最常用最便于记忆的使用就可以了~
下面简单分享下cv::getTickCount和cv::getTickFrequency这两个函数的使用。
C++实现代码
/**
* @brief getTickCount() 该函数返回CPU自某个事件以来走过的时钟周期数
* @brief getTickFrequency() 该函数返回CPU一秒钟所走的时钟周期数。便于以秒为单位进行计时。
*/
// 计时开始
double timex = static_cast<double>(getTickCount());
// 需要计时的函数或代码
..............
// 计时结束
timex = ((double)getTickCount() - timex) / getTickFrequency();
// 时间输出
cout << "运行时间为:" << timex << "秒" << endl ;
测试代码
#include<iostream>
#include<opencv2/opencv.hpp>
#include<ctime>
using namespace std;
using namespace cv;
int main(void)
{
Mat A = Mat::zeros(10000, 10000, CV_32FC1);
// 随意创建一个A矩阵
for (int i = 0; i < A.rows; i++)
{
for (int j = 0; j < A.cols; j++)
{
A.at<float>(i, j) = rand() % 100 / 100.f;
}
}
Mat B = A.clone();
// 计时开始
double time0 = static_cast<double>(getTickCount());
for (int i = 0; i < A.rows; i++)
{
for (int j = 0; j < A.cols; j++)
{
B.at<float>(i, j) *= 2;
}
}
// 计时结束
time0 = ((double)getTickCount() - time0) / getTickFrequency();
// 时间输出
cout << " 运行时间为:" << time0 << "秒" << endl << endl;
system("pause");
return 0;
}
测试效果

本文介绍了一种便于记忆的OpenCV计时函数,方便大家使用。
如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容