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」が表示されます。

まとめ
OpenCVのputText()関数を使えば、わずか数行のコードで画像へのテキスト描画が可能です。フォントスタイルやサイズ、色、太さを自由に組み合わせることで、画像処理アプリケーションにおける注釈付けや情報表示など、さまざまな用途に活用できます。日本語などのマルチバイト文字を扱いたい場合は、別途工夫が必要になる点にも注意しましょう。
-
C++とOpenCVで画像を読み込んで表示する方法を徹底解説
この記事では、C++でOpenCVを使用して画像を読み込み、表示する方法について詳しく解説します。OpenCVで画像の読み込みや表示を行うには、以下のような関数やデータ構造が必要になります。 画像処理に必要な基本要素 Mat(マトリクス) Matは関数ではなく、データ構造の一種である変数型です。C++におけるint型やchar型、string型のように、MatはOpenCV独自の変数型であり、画像を格納するための行列(マトリクス)データ構造を作成します。プログラム内で「Mat myImage;」と記述した場合、「myImage」という名前の行列変数を宣言していることになります。 name
-
JavaのOpenCVライブラリで画像にテキストを追加・描画する方法
putText()メソッドとはJavaでOpenCVライブラリを使用して画像にテキストを追加するには、org.opencv.imgproc.Imgprocクラスが提供するputText()メソッドを利用します。このメソッドを呼び出すと、指定した画像上に任意の文字列を描画できます。putText()メソッドの引数putText()メソッドには、以下のパラメータを渡します。処理対象の画像を格納するMatオブジェクト描画したいテキストを指定するStringオブジェクトテキストの表示位置(左下基準)を指定するPointオブジェクトフォントの種類を指定する整数定数(例:Imgproc.FONT_HERS