opencv在圖像顯示中文

在圖像定位和模式識別時,常常須要把結果標註到圖片上,標註內容能夠是數字字母、矩形框等(opencv支持的)或者是中文漢字(藉助freetype)。windows

一、顯示數字/矩形框字體

#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 );
二、顯示漢字

首先,下載freetype-2.6,在build/windows/vc2010中編譯項目(我使用的是vs2012),在/objs/vc2010/Win32/下生成靜態連接庫freetype26.lib。ui

image

而後,新建項目,將freetype的include文件夾添加到項目的包含路徑中,將freetype26.lib添加到連接文件中。添加漢字繪製類CvxText,編寫例子:spa

#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

項目下載。.net

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

相關文章
相關標籤/搜索