在圖像定位和模式識別時,常常須要把結果標註到圖片上,標註內容能夠是數字字母、矩形框等(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
而後,新建項目,將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; }
項目下載。.net
參考:http://blog.csdn.net/fengbingchun/article/details/8029337code