OpenCV绘图之字体和文字

参考OpenCV绘图之字体和文字 - 云+社区 - 腾讯云

在OpenCV中输出文本是比较方便吧,有一个问题就是获取字体有那么一点麻烦,需要调用函数来实现其赋值,作为字体参数,而输出文本只需要设置字体,文本输出位置,文本的颜色,文本字符串,显示文本的图像这几个参数.

下面说一下输出文本的函数:

void cvPutText{

CvArr * img,

const char* text,

CvPoint origin,

const CvFont * font,

CvScalar color

};

const CvFont * font 参数是通过cvInitFont()函数来实现的.

下面是cvInitFont函数的原型声明:

CvFont * cvInitFont(

CvFont * font,

int font_face,

double hscale,

double vscale,

int thickness = 1,

int line_type = 8

);

关于font_face参数:

CV_FONT_HERSHEY_SIMPLEX -               正常大小无衬线字体. 
CV_FONT_HERSHEY_PLAIN -                 小号无衬线字体.
CV_FONT_HERSHEY_DUPLEX -                正常大小无衬线字体比 CV_FONT_HERSHEY_SIMPLEX 更复杂) 
CV_FONT_HERSHEY_COMPLEX -               正常大小有衬线字体.
CV_FONT_HERSHEY_TRIPLEX -               正常大小有衬线字体 (  比 CV_FONT_HERSHEY_COMPLEX更复杂) 
CV_FONT_HERSHEY_COMPLEX_SMALL -          CV_FONT_HERSHEY_COMPLEX 的小译本.
CV_FONT_HERSHEY_SCRIPT_SIMPLEX -         手写风格字体.
CV_FONT_HERSHEY_SCRIPT_COMPLEX -         比 CV_FONT_HERSHEY_SCRIPT_SIMPLEX 更复杂.
参数能够由一个值和可选择的 CV_FONT_ITALIC  字体标记合成。就是斜体字.

参数vscale,和hscale分别表示行高、和字体宽度,当其值被设为1.0时,就为默认值,当其值被设为0.5时,就为原默认值的一半,shear参数表示字体的倾斜程度,当其值为0时,表示字体不倾斜,当其值为1时,文字倾斜45度.

下面是使用函数的一个实例:

/* OpenCV之显示文本函数的应用实例 */

#include 

#include 



int main()

{

/* 创建一个空图 */

CvSize size = cvSize(400, 400);

IplImage * testImage = cvCreateImage(size, IPL_DEPTH_8U, 3);

/* 对图像数据域的矩阵进行赋值得到一副空白图 */

for(int y = 0; y < testImage->height; y++){

unsigned char * Pout = (unsigned char *)(testImage->imageData + y * testImage->widthStep);

for(int x = 0; x < testImage->width; x++){

Pout[3 * x + 0] = 255;

Pout[3 * x + 1] = 255;/* 使图像呈现白色 */

Pout[3 * x + 2] = 255;

}

}

/* 定义要显示的内容 */

char * text = new char[20];

text = "Hello, world";/* 文本字符串1*/

char * text_last = new char[60];

text_last = "Copyright @3blog.csdn.net/yinkailin. All Rights Reserved.";/* 文本字符串2 */

/* 定义要显示文字的位置、颜色和字体 */

CvPoint point1 = cvPoint(50, 50);

CvPoint point2 = cvPoint(80, 80);/* 设置字体在图片中出现的位置 */

CvPoint point3 = cvPoint(110, 110);

CvPoint point4 = cvPoint(10, 370);

CvScalar color = cvScalar(10, 10, 210);/* 设置字体的颜色 */

CvFont font1, font2, font3, font4;/* 定义一些设置字体的变量 */


/* 使用cvInitFont函数为上述结构体赋值 */

cvInitFont(&font1, CV_FONT_HERSHEY_SCRIPT_SIMPLEX, 0.5, 1.0, 0);

cvInitFont(&font2, CV_FONT_HERSHEY_COMPLEX, 0.5, 1.0, 0);

cvInitFont(&font3, CV_FONT_HERSHEY_SIMPLEX, 0.5, 1.0, 0);

cvInitFont(&font4, CV_FONT_HERSHEY_SCRIPT_COMPLEX, 0.5, 1.0, 0);



cvPutText(testImage, text, point1, &font1, color);

cvPutText(testImage, text, point2, &font2, color);

cvPutText(testImage, text, point3, &font3, color);/* 将相应格式的字体显示在图片相应的位置 */

cvPutText(testImage, text_last, point4, &font4, color);

cvNamedWindow("PutText");

cvShowImage("PutText", testImage);/* 创建图片并显示文本 */

cvWaitKey(0);

/* 释放相关资源 */

cvReleaseImage(&testImage);

cvDestroyAllWindows();

return 0;

}

程序的运行结果如下:

 

你可能感兴趣的:(Opencv,计算机视觉,深度学习,机器学习)