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绘图之字体和文字_第1张图片

。。。。。。。。。。。。。。。。。。。。。。。。。

 


 

 

 


你可能感兴趣的:(OpenCV学习记录,opencv,输出文本)