Qt+Opencv应用程序计时/度量(测量速度)的三种方法
OpenCV计时/度量方法(测量速度),尽量远离经验法则,请试着用你的测量或者任何可信语言的测量参考作为你的经验法则的来源:
可以使用OPenCV中的TickMeter类或getTickFrequency函数和getTickCount函数来度量一个计算机视觉过程(或者任何处理这个问题的过程)的执行时间。还可以使用Qt中的QElapsedTimer类。
getTickFrequency可以用来获得一秒钟内CUP的时钟数(即频率),getTickCount可以用来获得自启动以来传递的CPU时钟数。
不过,TickMeter类提供了更大的灵活性,而且更易于使用。只需在任何过程之前启动该类,并在该过程之后停止该类。
//! 方法一:OpenCV-getTickCount()、getTickFrequency()
int64 tickCount = cv::getTickCount();
//! 方法二:OpenCV-TickMeter类
cv::TickMeter meter;
meter.start();
//! 方法三:Qt-----QElapsedTimer类
QElapsedTimer timer;
timer.start();
currentPluginInstance->processImage(originalMat, processedMat);//具体的应用程序处理过程
meter.stop();
double ms = (cv::getTickCount() - tickCount) * 1000 / cv::getTickFrequency();
qDebug() << "-------------------------TickMeter---------------------------";
qDebug() << "耗时:" << meter.getTimeMicro() << "微妙";//3678.6
qDebug() << "耗时:" << meter.getTimeMilli() << "毫秒";//3.6786
qDebug() << "耗时:" << meter.getTimeMilli() << "计数";//3.6786
qDebug() << "耗时:" << meter.getTimeSec() << "秒"; //0.0036786
qDebug() << "-------------------------QElapsedTimer---------------------------";
qDebug() << "耗时:" << timer.elapsed() << "毫秒"; //4,整数
qDebug() << "-------------------------getTickCount()---------------------------";
qDebug() << "耗时:" << ms << "毫秒"; //3.6787
printf("in %g ms\n", ms); //3.6787,浮点数毫秒
fflush(stdout); //该语句不能少啊