转载:
FreeType:
FreeType能将字变成位图,进而用于显示。
windows 32位版本: 【lib+dll】
但我需要用静态库,且同时需要32位和64位,幸而已有前人做了工作:, 解压出来的包里:freetype-2.5.3\builds\windows\ 该路径下有vc6.0,vs2005, vs2008, vs2010的工程,直接编译就行,作者设定了6种的编译模式。
但只有32位的,64位自己手动加一加就行,略繁琐。 【自己懒得编的,也可以留言,我把库发给你,^_^】
--------------------------------------------------------------------------------------------------
接下来是结合opencv来显示:【Tips:opencv cvPutText不支持中文。】
看到篇论文,把原因讲的很清楚,通过引入第三方库,解决了这个问题: (文章中的代码有很多错误的,照搬会出现错误)
作者:柴树杉, chaishushan#gmail.com 【他的博客好像是: ,I'm not sure】
貌似之前作者提供了源码,可是现在打不开了:
不过网上有很多copy下来的,我参考的是: 基本正确,但有一处错误: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:
因篇幅问题不能全部显示,请点此查看更多更全内容