用到的函数和转换格式
getTickCount()get
TickCount():系统中会有专门的一个数据从开机哪一个起就会一直累加,这个函数就是返回一个值从某一时刻(比如计算机启动)开始,计算机总共经过的轮的次数 单位为 ms
getTickFrequency()
getTickFrequency():这个函数的单位是秒,也就是返回了一在一秒内计算机重复的次数,也就是CPU的频率。
QString::number()
QString::number是将数数字(整数、浮点数、有符号、无符号等)转换为QString类型,常用于UI数据显示。
我们这里转换为double类型的数据
QString text = QString::number(duration, 10, 1) + " ms";
代码块
double duration = 0.0;
cv::Mat dst;
cv::Mat src = cv::imread("迪丽热巴.jpg");
//获取开始
duration = static_cast<double>(cv::getTickCount());
//进行图片的均值滤波
cv::blur(src,dst, cv::Size(3, 3), cv::Point(-1, -1));
//计算结束
duration = static_cast<double>(cv::getTickCount()) - duration;
//计算用了多少ms
duration /= (double)cv::getTickFrequency() / 1000;
cv::Mat image = cv::Mat::zeros(cv::Size(src.cols, src.rows), CV_8UC1);
//设置绘制文本的相关参数
QString text = QString::number(duration, 10, 1) + " ms";
int font_face = cv::FONT_HERSHEY_COMPLEX;
double font_scale = 2;
int thickness = 2;
int baseline;
//获取文本框的长宽
cv::Size text_size = cv::getTextSize(text.toStdString(), font_face, font_scale, thickness, &baseline);
//将文本框居中绘制
cv::Point origin;
origin.x = image.cols / 2 - text_size.width / 2;
origin.y = image.rows / 2 + text_size.height / 2;
cv::putText(image, text.toStdString(), origin, font_face, font_scale, cv::Scalar(255, 255, 255), thickness, 4, 0);
cv::imshow("time", image);
cv::imshow("0",dst);