FreeType 结合opencv –> 在图像上显示中文

  • 转载: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: 
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值