出处:https://www.cnblogs.com/carle-09/
只贴源码备用了。效果图去原博客看就好。
重点:只支持字母数字。不支持汉字。
/*
作者:WP @20190626
功能:opencv在图片中写入文字
说明:
(1)只在图像上打印 数字、字母的话:
1.Mat格式的图像,可以使用opencv自带的putText。
2.IPLImage格式的图像,可以使用自带的cvInitFont和cvPutText函数。
(2)在图像上打印 汉字的话,可以使用FreeType库。
FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件。
*/
#include <iostream>
#include "opencv2/opencv.hpp"
using namespace std;
using namespace cv;
//--------------------------------Mat格式的图像,可以使用opencv自带的putText()函数---------------------------------------
int main( )
{
//Mat image = Mat::zeros(Size(640, 480), CV_8UC3); // 创建空白图用于绘制文字
//image.setTo(Scalar(100, 0, 0)); //设置蓝色背景
Mat image = imread("D:\\005_test_4\\testImg\\road_6.png",1); // 最后显示,1---原图,0---灰度图
//设置绘制文本的相关参数
string text = "JILIN UNIVERSITY";
int font_face = FONT_HERSHEY_COMPLEX;
double font_scale = 2;
int thickness = 2;
int baseline;
//获取文本框的长宽
Size text_size = getTextSize(text, font_face, font_scale, thickness, &baseline);
//将文本框居中绘制
Point origin;
origin.x = image.cols / 2 - text_size.width / 2;
origin.y = image.rows / 2 + text_size.height / 2;
putText(image, text, origin, font_face, font_scale, Scalar(0, 255, 255), thickness, 8, 0);
putText(image, "This image is clear.", Point(50, 100), FONT_HERSHEY_SIMPLEX, 1, Scalar(0,0,255), 4, 8);
//显示绘制结果
imshow("image", image);
waitKey(0);
return 0;
}
自己用的时候一般会打印一些数字 那就将数字转为字符在打印就好
例如打印 3.1415926
char sf[30];
sprintf(sf, "%f", 3.1415926));
string text = sf;