圖像處理---《在圖片上打印文字 putText()》


圖像處理---《在圖片上打印文字 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;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM