C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++とOpenCVを使って画像にテキストを描画する方法【putText関数の使い方】

OpenCVでは、putText()関数を使うことで、画像の上にテキストを描画できます。この関数は<imgproc.hpp>ヘッダー内で定義されています。画像にテキストを描画するには、まず画像を読み込むための行列(Mat)を宣言する必要があります。

本記事のサンプルでは、既存の画像ファイルを読み込む代わりに、白一色で塗りつぶした空の行列を作成し、その上にテキストを描画します。テキストを表示する際は、以下の要素を指定する必要があります。

  • テキストの描画開始位置(座標)
  • フォントの種類
  • フォントの色
  • フォントの太さ(線の太さ)

putText()関数の基本構文

putText(image, "Text in Images", text_position, FONT_HERSHEY_COMPLEX, font_size, font_Color, font_weight);

各引数の意味は次のとおりです。

  • image:描画対象となる画像(Matオブジェクト)
  • "Text in Images":描画したい文字列
  • text_position:テキストの左下隅の座標(Point型)
  • FONT_HERSHEY_COMPLEX:フォントのスタイル
  • font_size:フォントのスケール(サイズ)
  • font_Color:文字の色(Scalar型、BGR形式)
  • font_weight:線の太さ

サンプルコード

以下のプログラムは、OpenCVで画像にテキストを描画する基本的な方法を示しています。

#include<iostream>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<string>
using namespace cv;
using namespace std;
int main() {
    // 白色で塗りつぶされた空の行列を作成//
    Mat image = Mat(400, 400, CV_8UC3, Scalar(255, 255, 255));
    // テキストの描画位置を宣言//
    Point text_position(80, 80);
    // フォントサイズを宣言//
    int font_size = 1;
    // フォントの色を宣言(黒)//
    Scalar font_Color(0, 0, 0);
    // フォントの太さを宣言//
    int font_weight = 2;
    // 行列にテキストを描画//
    putText(image, "Text in Images", text_position, FONT_HERSHEY_COMPLEX, font_size, font_Color, font_weight);
    // 画像を表示//
    imshow("Image", image);
    // キー入力を待機//
    waitKey(0);
    return 0;
}

コードの解説

このプログラムでは、Mat(400, 400, CV_8UC3, Scalar(255, 255, 255))によって、400×400ピクセルの白色画像を作成しています。その後、Point text_position(80, 80)でテキストの描画位置を指定し、フォントサイズ・色・太さをそれぞれ変数として定義しています。

putText()関数にこれらの値を渡すことで、画像上に「Text in Images」という文字列が描画されます。最後にimshow()で結果をウィンドウに表示し、waitKey(0)でユーザーのキー入力を待ちます。

実行結果

プログラムを実行すると、白い背景の画像に黒色のテキスト「Text in Images」が表示されます。

C++とOpenCVを使って画像にテキストを描画する方法【putText関数の使い方】

まとめ

OpenCVのputText()関数を使えば、わずか数行のコードで画像へのテキスト描画が可能です。フォントスタイルやサイズ、色、太さを自由に組み合わせることで、画像処理アプリケーションにおける注釈付けや情報表示など、さまざまな用途に活用できます。日本語などのマルチバイト文字を扱いたい場合は、別途工夫が必要になる点にも注意しましょう。

  1. C++とOpenCVで画像を読み込んで表示する方法を徹底解説

    この記事では、C++でOpenCVを使用して画像を読み込み、表示する方法について詳しく解説します。OpenCVで画像の読み込みや表示を行うには、以下のような関数やデータ構造が必要になります。 画像処理に必要な基本要素 Mat(マトリクス) Matは関数ではなく、データ構造の一種である変数型です。C++におけるint型やchar型、string型のように、MatはOpenCV独自の変数型であり、画像を格納するための行列(マトリクス)データ構造を作成します。プログラム内で「Mat myImage;」と記述した場合、「myImage」という名前の行列変数を宣言していることになります。 name

  2. JavaのOpenCVライブラリで画像にテキストを追加・描画する方法

    putText()メソッドとはJavaでOpenCVライブラリを使用して画像にテキストを追加するには、org.opencv.imgproc.Imgprocクラスが提供するputText()メソッドを利用します。このメソッドを呼び出すと、指定した画像上に任意の文字列を描画できます。putText()メソッドの引数putText()メソッドには、以下のパラメータを渡します。処理対象の画像を格納するMatオブジェクト描画したいテキストを指定するStringオブジェクトテキストの表示位置(左下基準)を指定するPointオブジェクトフォントの種類を指定する整数定数(例:Imgproc.FONT_HERS