【Python】OpenCVで画像に文字を重ねて表示する

前回は、画像に図形を重ねて表示する方法を紹介しました。

https://www.learning-nao.com/?p=1686

今回は、画像に文字を重ねて表示する方法を紹介します。文字を重ねることで、より直接的に情報を加えることができます。

前回同様簡単実装できるので、実践しながらチャレンジしてみてください^^

Pythonで実装する

使用する画像

今回も、この素敵なキツネの画像を使っていきます。

使用するオリジナルの画像

画像サイズが大きいのでリサイズして使用します。読み込みまでのコードは以下の通りです。

import cv2

path = "input/fox.jpg"
img = cv2.imread(path)
height, width = img.shape[:2]


#画像のリサイズ(1/4に)
img = cv2.resize(img,(round(width/4), round(height/4)))

文字を描画する

画像に文字を追加するには、putText()を使用します。

putText(画像, 文字, 座標, フォント, フォントサイズ, 色)

座標では、文字列の左上の座標を指定します(top, left)。

フォントは複数選択でき、以下のものが使用できます。

  • FONT_HERSHEY_SIMPLEX
  • FONT_HERSHEY_PLAIN
  • FONT_HERSHEY_DUPLEX
  • FONT_HERSHEY_COMPLEX
  • FONT_HERSHEY_TRIPLEX
  • FONT_HERSHEY_COMPLEX_SMALL
  • FONT_HERSHEY_SCRIPT_SIMPLEX
  • FONT_HERSHEY_SCRIPT_COMPLEX
  • FONT_ITALIC

ただし、OpenCVでは日本語文字列を扱うことができません。日本語を扱うためには、Pillowなど他のライブラリを利用する必要があります。

フォントスケールは小数点単位で細かく指定することができます。最後の引数の色は、BGRで指定します。

では、実際のコードを以下に紹介します。

imageText = img.copy()
text = 'Sample text is here!'
#始点の座標
org = (50,350)
cv2.putText(imageText, text, org, fontFace = cv2.FONT_HERSHEY_COMPLEX, fontScale = 1.5, color = (250,225,0))

cv2.imshow("Image Text",imageText)
cv2.waitKey(0)

このコードを実行すると、以下のような画像が表示されます。

画像にテキストが表示される

このように、画像に文字を追加できました。

OpenCVの学習におすすめ書籍

PythonでOpenCV始めてみようという方におすすめなのが以下書籍です。実装例も豊富なので、1からコードを書かずとも学習を進めることができます。

オライリーの1冊は読み物というより辞書としての利用におすすめです。お値段結構しますが、細かい情報までしっかりと詰め込まれています。

まとめ

OpenCVで画像に文字を追加する方法を紹介しました。

文字を追加すると、伝えたい情報をダイレクトに示すことができるので非常に便利です。OpenCVだけでは日本語対応していないのが残念ですが、ライブラリを組合わせることで実装できます。是非挑戦してみてください^^

OpenCVの基礎を身につけるためのロードマップは以下を参考にしてください。

ではでは👋