您的当前位置:首页FreeType 结合opencv –> 在图像上显示中文

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

2024-05-25 来源:乌哈旅游
  • 转载:

    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: 

因篇幅问题不能全部显示,请点此查看更多更全内容