MFC & Gdi+ 实现在图片上写中文 (OpenCV原生不支持写中文本到图片,当然FreeType库也可实现)

本文介绍了在OpenCV中实现图片上添加中文文本的两种方法:一是使用FreeType库,二是利用GdiPlus。由于OpenCV原生putText函数不支持中文,作者详细阐述了配置和使用这两个库的过程,包括相关文件的添加、编译配置以及代码示例。最后展示了使用GdiPlus的运行结果。
摘要由CSDN通过智能技术生成

    你从来不会觉得,在图片上打上中文语句会有多么困难,除非你真正做过一次。

   

    也许你学过OpenCV, 认为没什么困难,可以用一个putText函数搞定。博主一开始也这样天真,但是动手后才发现,OpenCV原生函数putText却是不支持中文字体的,想要实现这个功能,需要再动一番手脚。


    这个故事告诉我们,理论和实践从来都不是一回事。


从网上搜集的资料来看,觉的可行的有两种方案:

  1. 下载FreeType库,参考:http://blog.sina.com.cn/s/blog_6bbd2dd101012dbh.html
  2. 利用Gdiplus,参考:http://www.cnblogs.com/CSGrandeur/p/3156843.html

  本质上两种都是一样的,就是调用库。由于看到FreeType库下载下来后还需要自己编译,就果断放弃了,等以后有时间,再用一下。


第一种方案(后来补上的):

  终于有空,花了一段时间,研究了一下在OpenCV中如何把中文输出到图片上的方法,这里利用FreeType第三方库了,以及专门为在OpenCV中使用它而编写的接口文件,当然这个接口不是我写的,而且它还有待于进一步完善,不过,就目前的应用,它足够满足我的要求了


  FreeType库的下载地点:http://gnuwin32.sourceforge.net/packages/freetype.htm


  可以下载编译好的安装包,也可以下载源文件自己编译,不过我想最好还是用现成的包吧,自己编译等有空有兴趣不妨搞一搞。


  FreeType包的安装也很简单,和OpenCV的安装一样,用的时候需要在工程中进行相关配置,我的环境是VS2013+Win8.1+OpenCV2.4.8+FreeType2.3.5,我们新建一个C++控制台应用程序,并把OpenCV和FreeType配置好,OpenCV我就不多说了,只讲讲FreeType需要配置的路径,在VS2013项目属性中包含:


  头文件包含目录:

    安装根目录\GnuWin32\include

    安装根目录\GnuWin32\include\freetype2

  库文件包含目录:

    安装根目录\GnuWin32\lib

  链接器附加依赖项:freetype.lib

  还有把 “安装根目录\GnuWin32\bin” 添加到环境变量PATH中,这和OpenCV是一样的,因为可能用到动态链接库。

这样FreeType就配置好了。


之后,在工程中添加下面的三个代码文件:cvxText.h、cvxText.cpp、test.cpp,当然运行所需要的图片文件和字体文件你要准备好放在程序能够找到目录下面,字体文件可以去C:\Windows\Fonts\下拷贝。之后编译运行,如果出现下面的错误提示:


    错误 1 error C4996: 'fopen':This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use_CRT_SECURE_NO_WARNINGS. See online help for details. d:\microsoft visual studio 12.0\opencv-2.4.8\opencv\build\include\opencv2\flann\logger.h 66


   这是由于接口文件使用了较古老的c语言函数,可以通过在工程属性的编译器预处理器定义中加入_CRT_SECURE_NO_WARNINGS 项来抑制。

   充分发挥你的复制粘贴能力对它们进行拷贝吧!


//============================================
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值