圖像處理---《在圖片上打印文字 putText()》
目的:想在處理之后的圖像上打印輸出結果。
方法: (1)只在圖像上打印 數字、字母的話:
1.Mat格式的圖像,可以使用opencv自帶的putText()。
2.IPLImage格式的圖像,可以使用自帶的cvInitFont和cvPutText函數。
(2)在圖像上打印 漢字的話,可以使用FreeType庫。
FreeType庫是一個完全免費(開源)的、高質量的且可移植的字體引擎,它提供統一的接口來訪問多種字體格式文件。
/* 作者:WP @20190626 功能:opencv在圖片中寫入文字 說明: (1)只在圖像上打印 數字、字母的話: 1.Mat格式的圖像,可以使用opencv自帶的putText。 2.IPLImage格式的圖像,可以使用自帶的cvInitFont和cvPutText函數。 (2)在圖像上打印 漢字的話,可以使用FreeType庫。 FreeType庫是一個完全免費(開源)的、高質量的且可移植的字體引擎,它提供統一的接口來訪問多種字體格式文件。 */ #include <iostream> #include "opencv2/opencv.hpp" using namespace std; using namespace cv; //--------------------------------Mat格式的圖像,可以使用opencv自帶的putText()函數--------------------------------------- int main( ) { //Mat image = Mat::zeros(Size(640, 480), CV_8UC3); // 創建空白圖用於繪制文字 //image.setTo(Scalar(100, 0, 0)); //設置藍色背景 Mat image = imread("D:\\005_test_4\\testImg\\road_6.png",1); // 最后顯示,1---原圖,0---灰度圖 //設置繪制文本的相關參數 string text = "JILIN UNIVERSITY"; int font_face = FONT_HERSHEY_COMPLEX; double font_scale = 2; int thickness = 2; int baseline; //獲取文本框的長寬 Size text_size = getTextSize(text, font_face, font_scale, thickness, &baseline); //將文本框居中繪制 Point origin; origin.x = image.cols / 2 - text_size.width / 2; origin.y = image.rows / 2 + text_size.height / 2; putText(image, text, origin, font_face, font_scale, Scalar(0, 255, 255), thickness, 8, 0); putText(image, "This image is clear.", Point(50, 100), FONT_HERSHEY_SIMPLEX, 1, Scalar(0,0,255), 4, 8); //顯示繪制結果 imshow("image", image); waitKey(0); return 0; }