OpenCV は画像にテキストを配置する
このチュートリアルでは、Python で OpenCV の putText()
関数を使用して画像にテキストを配置する方法について説明します。
Python で Opencv の putText()
関数を使用して画像にテキストを配置する
OpenCV の putText()
関数を使用して、希望の色、フォントサイズ、フォントファミリ、および場所で画像にテキストを配置できます。putText()
関数の最初の引数は、テキストを配置する画像です。
2 番目の引数は、画像に配置するテキスト(文字列)です。3 番目の引数は、テキストを配置する場所です。デフォルトでは、場所の原点は画像の左上です。
場所の値は、最初の整数が x 軸の位置を定義し、2 番目の整数が y 軸の位置を定義する 2つの整数を使用して設定する必要があります。
たとえば、場所を(10,20)に設定すると、画像の左上にある原点から x 軸に 10 ピクセル、y 軸に 20 ピクセル離れた場所にテキストが配置されます。
4 番目の引数はフォントファミリーです。これは、cv2.FONT_HERSHEY_SIMPLEX
のような OpenCV のデフォルトのフォントファミリーからのものにすることができます。5 番目の引数はフォントサイズまたはフォントスケールであり、その値はデータ型 double である必要があります。
6 番目の引数はテキストの色であり、その値は白色の場合は(255,255,255)のような RGB トリプレットである必要があります。
上記のすべての引数が必須であり、1つ以上の引数が欠落している場合、エラーが発生します。設定できるオプションの引数も 3つあり、オプションの引数の値を設定しない場合は、デフォルト値が使用されます。
最初のオプションの引数は線の太さであり、その値はデフォルトで整数である必要があります。2 番目のオプションの引数は線種またはスタイルで、デフォルトで cv2.LINE_8
に設定されています。
3 番目のオプションの引数は、true の場合、左下の位置を原点として設定するために使用されますが、デフォルトでは false に設定されており、テキストが反転します。
たとえば、numpy
ライブラリの zeros()関数を使用して黒色の 512 x 512 の画像を作成し、putText()
関数を使用してランダムなテキストをその上に配置してみましょう。以下のコードを参照してください。
import numpy as np
import cv2
img = np.zeros((512, 512, 3), np.uint8)
font = cv2.FONT_HERSHEY_SIMPLEX
position = (10, 500)
fontScale = 2
fontColor = (255, 255, 0)
cv2.putText(img, "Hello World!", position, font, fontScale, fontColor)
cv2.imshow("img", img)
cv2.waitKey(0)
出力:
上記の例では黒の画像を使用しましたが、imread()
関数を使用して任意のカラー画像を使用することもできます。オプションの引数の値を変更することもできます。
たとえば、線の太さを 3 に変更します。線の種類をアンチエイリアス
線の cv2.LINE_AA
に変更し、最後の引数を使用してテキストを反転し、true に設定します。以下のコードを参照してください。
import numpy as np
import cv2
img = np.zeros((512, 512, 3), np.uint8)
font = cv2.FONT_HERSHEY_SIMPLEX
position = (10, 450)
fontScale = 2
fontColor = (255, 255, 0)
cv2.putText(
img, "Hello World!", position, font, fontScale, fontColor, 3, cv2.LINE_AA, True
)
cv2.imshow("img", img)
cv2.waitKey(0)
出力:
コードを見ると、テキストが表示されるように、テキストの場所も再設定する必要があることがわかります。OpenCV でサポートされているフォントファミリの詳細については、このリンクを確認してください。
関連記事 - Python OpenCV
- OpenCV ArUco マーカー
- OpenCV しきい値
- OpenCV でのイメージ マスキング
- OpenCV パッケージ構成
- OpenCV を使用してイメージで Bitwise_AND を利用する
- Python で OpenCV を使用した SIFT