zoukankan      html  css  js  c++  java
  • opencv在图像显示中文

    在图像定位和模式识别时,经常需要把结果标注到图片上,标注内容可以是数字字母、矩形框等(opencv支持的)或者是中文汉字(借助freetype)。

    1、显示数字/矩形框

    #include <opencv/highgui.h>
    using namespace cv;
    
    //绘画
    Mat image = imread(image_root + filename);
    Point p1(x,y), p2(x+w,y+h), p0(x+w/2, y+h/2);
    string label = 123456789; //数字
    
    rectangle(image, p1, p2, Scalar(255, 0, 0));
    putText(image, label.c_str(), p0, CV_FONT_HERSHEY_COMPLEX, 0.5, Scalar(0, 255, 0));
    
    imwrite( image_root2 + filename, image );
    2、显示汉字

    首先,下载freetype-2.6,在build/windows/vc2010中编译项目(我使用的是vs2012),在/objs/vc2010/Win32/下生成静态链接库freetype26.lib。

    image

    然后,新建项目,将freetype的include文件夹添加到项目的包含路径中,将freetype26.lib添加到链接文件中。添加汉字绘制类CvxText,编写例子:

    #include <opencv/highgui.h>
    #include <assert.h>
    #include "CvxText.h"
    using namespace cv;
    
    int main()
    {
        IplImage *image = cvLoadImage("lena.jpg", CV_LOAD_IMAGE_COLOR);
        assert(image);
    
        // 输出汉字
        {
            // C:\Windows\Fonts为windows系统自带的字体,选择中文的
            CvxText text("C:\Windows\Fonts\FZSTK.TTF");
            
            const char *msg = "在OpenCV中输出汉字!";
            float p = 0.5;
            text.setFont(NULL, NULL, NULL, &p);   // 透明处理   
            text.putText(image, msg, cvPoint(100, 150), CV_RGB(0,0,255));
    
            Mat mat(image);
            imwrite( "pro.jpg", mat );
        }
        cvReleaseImage(&image);
        return 0;
    }

    lena pro

    项目下载。

    参考:http://blog.csdn.net/fengbingchun/article/details/8029337

  • 相关阅读:
    Android安装apk
    Android获取应用程序版本信息
    Handler消息传递机制
    Activity的启动模式
    cocopods的使用
    ios9 的新特性
    静态库的制作详解
    真机调试
    时间差计算(给定两时间,转换为时间差)
    socket 通信机制的实现
  • 原文地址:https://www.cnblogs.com/houkai/p/4865937.html
Copyright © 2011-2022 走看看