OpenCV绘图之字体和文字

来源:互联网 发布:阿里云主机绑定域名 编辑:程序博客网 时间:2024/04/29 12:04

    在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 <highgui.h>#include <cv.h>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;}

程序的运行结果如下:

奋斗。。。。。。。。。。。。。。。。。。。。。。。。。

 


 

 

 


原创粉丝点击