找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3460|回复: 0

利用OpenCV在图片上书写英文

[复制链接]
发表于 2012-1-17 10:03:01 | 显示全部楼层 |阅读模式
     利用OpenCV进行英文字符串的书写是很容易的。只需要调用cvPutText()函数即可。该函数的申明如下所示: cvPutText(CvArr* img, const char* text, CvPoint origin, const CvFont* font, CvScalar color);函数中各个参数的含义如下所示:
img---图片指针(需要说明的是,CvArr* 等价于void*,一般我们在这里传递一个IplImage*);
text---显然是需要打印到图片上的字符串的内容;
origin---字符串在图片上打印的原点(即,字符串的左下角在图片中的位置)
font---描述字体属性的变量;
color---字体的颜色;
上面函数中出现了一个较为生僻的变量CvFont*,从名称不难发现,该类型用于进行字符属性的描述;需要刻意提醒的是,CvFont类型的指针并不能像CvMat或IplImage类型的指针那样,存在一个cvCreate**之类的函数对其进行初始化。CvFont类型变量的初始化是通过函数cvInitFont来实现的;该函数的申明如下所示:
void cvInitFont(CvFont* font, int font_face, double h_scale, double v_scale, double shear=0, int thickness=1, int line_type=8);
该函数中各个变量的含义如下所示:
font---传入及传出的字体属性类型指针;
font_face---表示字体的类型,其取值只能为以下数值之一:
1. CV_FONT_HERSHEY_SIMPLEX
2. CV_FONT_HERSHEY_PLAIN
3. CV_FONT_HERSHEY_DUPLEX
4. CV_FONT_HERSHEY_COMPLEX
5. CV_FONT_HERSHEY_TRIPLEX
6. CV_FONT_HERSHEY_COMPLEX_SMALL
7. CV_FONT_HERSHEY_SCRIPT_SIMPLEX
8. CV_FONT_HERSHEY_SCRIPT_COMPLEX
h_scale---只能为1或0.5,表示水平方向字体的缩放系数;
v_scale---只能为1或0.5,表示垂直方向字体的缩放系数;
shear---取值从0---1,表示字体的倾斜程度,0表示不倾斜,1表示倾斜45度;
thichness, line_type这两个参数同OpenCV的其它绘图函数中定义的一样,表示线型的宽度和线条的类型;
这里,不妨给出一段参考代码,来举例说明上述两个函数的用法;#include "stdafx.h"
  1. #include "cv.h"
  2. #include "highgui.h"
  3. #include "iostream"
  4. using namespace std;
  5. int _tmain(int argc, _TCHAR* argv[])
  6. {
  7.         IplImage* pImg = cvLoadImage("c:/test.jpg");
  8.         if (!pImg)
  9.         {
  10.                 cout<<"pImg load error..."<<endl;
  11.                 system("pause");
  12.                 exit(-1);
  13.         }
  14.         CvFont font;
  15.         cvInitFont(&font, CV_FONT_HERSHEY_COMPLEX, 1.0, 1.0, 0, 2, 8);
  16.         cvPutText(pImg, "Hello, Chen Lee!", cvPoint(250, 250), &font, CV_RGB(255,0,0));
  17.        
  18.         cvSaveImage("c:/res.jpg", pImg);
  19.         cvNamedWindow("img", 0);
  20.         cvShowImage("img", pImg);
  21.         cvWaitKey(0);
  22.         system("pause");
  23.         cvReleaseImage(&pImg);
  24.         cvDestroyAllWindows();
  25.         return 0;
  26. }
复制代码
原图

运行结果

作者:carson2005 发表于2012-1-16 23:24:00 原文链接

您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-11-23 16:04 , Processed in 0.408865 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表