-
转载:http://www.blogbus.com/shijuanfeng-logs/271845011.html
FreeType:http://www.freetype.org/
FreeType能将字变成位图,进而用于显示。
windows 32位版本:http://gnuwin32.sourceforge.net/packages/freetype.htm 【lib+dll】
但我需要用静态库,且同时需要32位和64位,幸而已有前人做了工作:http://sourceforge.net/projects/freetype/files/freetype2/2.5.1/, 解压出来的包里:freetype-2.5.3\builds\windows\ 该路径下有vc6.0,vs2005, vs2008, vs2010的工程,直接编译就行,作者设定了6种的编译模式。
但只有32位的,64位自己手动加一加就行,略繁琐。 【自己懒得编的,也可以留言,我把库发给你,^_^】
--------------------------------------------------------------------------------------------------
接下来是结合opencv来显示:【Tips:opencv cvPutText不支持中文。】
看到篇论文,把原因讲的很清楚,通过引入第三方库,解决了这个问题:基于OpenCV的汉字绘制研究 (文章中的代码有很多错误的,照搬会出现错误)
作者:柴树杉, chaishushan#gmail.com 【他的博客好像是:http://chaishushan.blog.163.com/ ,I'm not sure】
貌似之前作者提供了源码,可是现在打不开了:http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=2083
不过网上有很多copy下来的,我参考的是:http://blog.csdn.net/fengbingchun/article/details/8029337 基本正确,但有一处错误:setFont在这里没有起作用,需要在函数CvxText::setFont末尾加一句:
这样就没问题了~// 设置字符大小
FT_Set_Pixel_Sizes(m_face, (int)m_fontSize.val[0], 0);
此外,源码里的例子给的不太好,我给出了自己的:
1: int main(int argc, char *argv[])
2: {
3: // 打开一幅
4: IplImage *img = cvLoadImage("C:\\Program Files\\opencv2.4.5\\samples\\c\\cat.jpg");
5: // 输出汉字
6: {
7: CvxText text("C:\\Windows\\Fonts\\simhei.ttf"); // "zenhei.ttf"为黑体常规
8: const char *msg = "在OpenCV中输出汉字!";
9: float p = 0.5;
10: text.setFont(NULL, NULL, NULL, &p); // 透明处理
11: text.putText(img, msg, cvPoint(100, 150), CV_RGB(255,0,0));
12: }
13: // 定义窗口,并显示影象
14: cvShowImage("test", img ); cvWaitKey(-1);
15: cvReleaseImage(&img);
16: return 0;
17: }
18:
FreeType 结合opencv –> 在图像上显示中文
最新推荐文章于 2023-12-19 10:38:54 发布