图片上打印帧率等信息
计算某一个算法的帧率
// Start timer
double timer = (double) getTickCount();
//待测算法
algorithm();
// Calculate Frames per second (FPS)
float fps = getTickFrequency() / ((double) getTickCount() - timer);
使用putText()函数将信息直接输出到图片上
函数原型
void cv::putText(
cv::Mat& img, // 待绘制的图像
const string& text, // 待绘制的文字
cv::Point origin, // 文本框的左下角
int fontFace, // 字体 (如cv::FONT_HERSHEY_PLAIN)
double fontScale, // 尺寸因子,值越大文字越大
cv::Scalar color, // 线条的颜色(RGB)
int thickness = 1, // 线条宽度
int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)
bool bottomLeftOrigin = false // true='origin at lower left'
);
使用示例
在图片左上角显示使用的算法,帧率,是否检测到目标物
putText(frame, detectionType, Point(100, 20), FONT_HERSHEY_SIMPLEX, 0.75, Scalar(50, 170, 50), 2);
putText(frame, "FPS : " + to_string(int(fps)), Point(100, 50), FONT_HERSHEY_SIMPLEX, 0.75, Scalar(50, 170, 50), 2);
if(detection_failed)
putText(frame, " Detection failed", Point(100, 80), FONT_HERSHEY_SIMPLEX, 0.75, Scalar(0, 0, 255), 2);
下面是效果图: