解决opencv无法在图片上添加中文的问题。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yangdashi888/article/details/71081509

1、由于opencv的putext函数无法在图片上输入中文,这里使用的是一个第三方的库,其方法为:

 OpenCV版本一直在更新,但至今依然没有往图像中添加中文注释的功能函数,本文基于freetype和OpenCV向读者推荐一种图像写入中文的方法。
一、下载freetype库并配置
1、从 http://download.csdn.net/detail/yangdashi888/9831107下载freetype库。例如下载freetype-2.7.tar.gz文件,在windows下解压压缩文件(如图1)。打开目录builds\windows,选择合适的VS版本,本文选择VS2010下的工程文件,并编译生成相关lib文件(debug、release, win32、×64),接着把其应用到VS2013工程上。


图1

2、编译成功后,在工具->选项->C++目录中添加freetype下的include文件夹;在链接器->附加库依赖项添加lib文件路径objs\vc2010\Win32;在链接器->输入->附加依赖项中添加相应的freetype27.lib或freetype27d.lib文件。
3、将CvxText.h和CvxText.cpp(http://download.csdn.net/detail/yangdashi888/9831115),分别添加到当前工程中。

二、示例
4、接下来就可以直接调用函数了,最简单的例子,其结果如图2所示:

#pragma once   
#include "opencv2/opencv.hpp"  
#include "CvxText.h"   
using namespace cv;  
  
int main(int argc, char *argv[])  
{  
Mat img = imread("lena.jpg", 0);  
CvxText text("msyh.ttf");   //载入希望输入的字体,可在目录C:\WINDOWS\Fonts中选择相应字体文件,并复制到工程下。  
  
//Scalar size(15, 0.5, 0.1, 0);   //设置字体的大小/空白比例/间隔比较/旋转角度  
float p = 1.f; //设置字体的透明度  
const char *msg = "@OpenCV中文输出测试!";  
 text.setFont(NULL, &cvScalar(15, 0.5, 0.1, 0), NULL, &p);//cvScalar设置字体的大小/空白比例/间隔比较/旋转角度 
//text.setFont(NULL, &size, NULL, &p);  
text.putText(&IplImage(img), msg, Point(140, 250), CV_RGB(0,255,0));  
  
imwrite("1.bmp", img);  
  
return 0;  
}  



展开阅读全文

没有更多推荐了,返回首页