- 所用函数
getTickCount():这个函数返回特定事件后的节拍数(例如,当机器打开时)。它可以用来初始化RNG或通过读取函数调用前后的滴答计数来测量一个函数执行时间。
getTickFrequency():返回CPU一秒中所走的时钟周期数。所以可以以秒为单位对某运算时间计时。
也可用函数cvGetTickCount()和cvGetTickFrequency()。但注意,此时得到的单位是us级的统计时间
使用方法:
double t = (double)getTickCount();
// do something ...
t = ((double)getTickCount() - t)/getTickFrequency();
2. 示例程序
#include <iostream>
#include "opencv2/opencv.hpp"
using namespace std;
using namespace cv;
int main()
{
Mat img = imread("test.jpg");
Mat dst = img.clone();
double start, end;
double start1, end1;
imshow("in", img);
int rowNumber = img.rows; //获取行数
int colNumber = img.cols; //获取列数
start = (double)cvGetTickCount();
start1 = (double)getTickCount();
for (int i = 0; i < rowNumber; i++)
{
for (int j = 0; j < colNumber; j++)
{
dst.at<Vec3b>(i, j)[0] = 255; //蓝色通道
dst.at<Vec3b>(i, j)[1] = 0; //绿色通道
dst.at<Vec3b>(i, j)[2] = 0; //红色通道
//dst.at<uchar>(i, j) = 255; //灰度图像
}
}
end = (cvGetTickCount() - start) / cvGetTickFrequency();
end1 = (getTickCount() - start1) / getTickFrequency();
printf("duration = %fus\n", end);
printf("duration = %fs\n", end1);
imshow("dst", dst);
waitKey(0);
destroyAllWindows();
return 0;
}