加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

借助OpenCV在图片上书写英文

发布时间:2021-11-23 15:36:34 所属栏目:教程 来源:互联网
导读:利用OpenCV进行英文字符串的书写是很容易的。只需要调用cvPutText()函数即可。该函数的申明如下所示: cvPutText(CvArr* img, const char* text, CvPoint origin, const CvFont* font, CvScalar color);函数中各个参数的含义如下所示: img---图片指针(需要

利用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"   
#include "cv.h"   
#include "highgui.h"   
#include "iostream"   
using namespace std;  
  
int _tmain(int argc, _TCHAR* argv[])  
{  
    IplImage* pImg = cvLoadImage("c:/test.jpg");  
    if (!pImg)  
    {  
        cout<<"pImg load error..."<<endl;  
        system("pause");  
        exit(-1);  
    }  
  
    CvFont font;  
    cvInitFont(&font, CV_FONT_HERSHEY_COMPLEX, 1.0, 1.0, 0, 2, 8);  
    cvPutText(pImg, "Hello, Chen Lee!", cvPoint(250, 250), &font, CV_RGB(255,0,0));  
      
    cvSaveImage("c:/res.jpg", pImg);  
  
    cvNamedWindow("img", 0);  
    cvShowImage("img", pImg);  
    cvWaitKey(0);  
  
    system("pause");  
    cvReleaseImage(&pImg);  
    cvDestroyAllWindows();  
  
    return 0;  
}  

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读