-
void cvInitFont( CvFont* font, int font_face, double hscale, double vscale, double shear=0, int thickness=1, int line_type=8 );
-
初始化字体结构-cvInitFont
cvInitFont初始化字体结构体,字体结构体可以被传递到文字显示函数中。
函数原型:
void cvInitFont( CvFont* font, //被初始化的字体结构体
int font_face, //字体名称标识符
double hscale,//字体宽度
double vscale, //字体高度
double shear=0,//字体斜度
int thickness=1, //字体笔划的粗细程度
int line_type=8 ); //字体笔划的类型
参数:
hscale:字体宽度。如果等于1.0f,字符的宽度是最初的字体宽度。如果等于0.5f,字符的宽度是最初的字体宽度的一半。
vscale:字体高度。如果等于1.0f,字符的高度是最初的字体高度。如果等于0.5f,字符的高度是最初的字体高度的一半。
shear:字体的斜度。当值为0时 ,字符不倾斜;当值为1.0f时,字体倾斜≈45度,等等。厚度让字母着重显示。函数cvLine用于绘制字母。
thickness:字体笔划的粗细程度。
line_type:字体笔划的类型。
-
2
cvPutText():使用给定的字体和颜色在图像上显示文本字符串
这些显示的文本由感兴趣矩形包围着。
函数原型:
void cvPutText(
CvArr* img,//待绘制图像
const char* text,//显示的字符串
CvPoint org,//第一个字母左下角的坐标
const CvFont* font,//指向字体结构的指针
CvScalar color );//文本的颜色.
-
3
结合cvInitFont和cvPutText在图像上显示文本的方法:
#include <opencv2\opencv.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\core\core.hpp>
using namespace std;
using namespace cv;
int main(){
IplImage* OriginImage=cvLoadImage("raw.jpg",1);
CvFont font;
cvInitFont(&font,CV_FONT_HERSHEY_COMPLEX,1.0,1.0,0,2,8);
cvPutText(
OriginImage,
"Hello every one!",
cvPoint(OriginImage->width/2-100,OriginImage->height/2),
&font,
cvScalar(255,0,0));
cvShowImage("show",OriginImage);
cvWaitKey(0);
return 0;}
-
4
getTextSize():获取待绘制文本框的大小,以方便放置文本框
函数原型:
Size getTextSize(
const string& text, //带设置的字符串文本
Point origin, //文本框左下角
int fontFace, //字符串字体
double fontScale,
int thickness, //字体笔划的粗细程度
int* baseLine
);
-
5
putText():在图像中绘制文本信息
函数原型:
void putText(
Mat& img, // 待绘制的图像
const string& text, // 待绘制的文字
Point origin, // 文本框的左下角
int fontFace, // 字体 (如cv::FONT_HERSHEY_PLAIN)
double fontScale, // 尺寸因子,值越大文字越大
Scalar color, // 线条的颜色(RGB)
int thickness = 1, // 线条宽度
int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)
bool bottomLeftOrigin = false // true='origin at lower left'
);
-
6
getTextSize()和putText()结合的应用:
程序:
int main()
{
//创建空白图用于绘制文字
Mat image = cv::Mat::zeros(cv::Size(640, 480), CV_8UC3);
//设置蓝色背景
image.setTo(cv::Scalar(100, 0, 0));
//设置绘制文本的相关参数
string text = "Hello World!";
int font_face = cv::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, cv::Scalar(0, 255, 255), thickness, 8, 0);
//显示绘制解果
imshow("image", image);
waitKey(0);
return 0;
}
END
注意事项
-
cvInitFont初始化字体结构体,字体结构体可以被传递到文字显示函数中。
-
cvPutText():使用给定的字体和颜色在图像上显示文本字符串
-
getTextSize():获取待绘制文本框的大小,以方便放置文本框
-
putText():在图像中绘制文本信息
-
参考网址:https://jingyan.baidu.com/article/870c6fc35a2520b03fe4be2b.html