6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MYJLabAdvent Calendar 2021

Day 17

OpenCVで画像に文字を描画してみた

Last updated at Posted at 2021-12-16

はじめに

こんにちは!
MYJLab Advent Calendar 2021の17日目は私が担当します。宜しくお願いします!
昨日は、@chiba___さんのGoogle Colab と Turtle で描くアルファベット一覧(小文字編)でした。Google Colaboratoryを用いた、タートルグラフィックスでのアルファベット(小文字)の描き方をわかりやすくまとめてくださっています。
とっても楽しい内容なので、是非大文字編と合わせてご覧ください!

OpenCVとは

Intelによって開発された、オープンソースのコンピュータビジョンライブラリです。
画像や動画の読み込み・画像処理・物体認識・機械学習など、コンピュータで画像や動画を処理するために必要な機能が多く実装されています。
今回は、このOpenCVを用いて画像に文字を描画してみます。

早速やってみる

では、早速OpenCVを用いて画像に文字を描画してみましょう!

環境

今回、私は"Google Colaboratory"を使用しました。

準備

画像に文字を描画する際にGoogleDrive内の画像を使用したいので、
以下のような方法でGoogle ColaboratoryからGoogleDriveへアクセスできるようにします。

from google.colab import drive
drive.mount('/content/drive')

本題

ここからが本題です。

まずは、Google ColaboratoryでOpneCVとMatplotlibを使用できるようにします。
Matplotlibは、画像に文字を描画したものを表示するために使用します。

import cv2
from matplotlib import pyplot as plt

次に、文字を描画する画像を指定します。

DIRNAMEには、画像を置いているディレクトリのパスを入力してください。
例えば、私の場合は、GoogleDriveのマイドライブの下にあるprodataというディレクトリの中に画像を置いているため、'/content/drive/My Drive/prodata/'と記述しました。

FILENAMEには、画像のファイル名を指定してください。
私の場合は、'rabbit.jpeg'と記述しました。

DIRNAME = 'ディレクトリのパスを入力'
FILENAME = "画像のファイル名を入力"
SRC_IMG_FILE = DIRNAME + FILENAME

そして、画像を読み込みます。
OpenCVの場合、色の並びは(B,G,R)ですが、Matplotlibでは(R,G,B)なので、
ここでcvtColorを用いて(B,G,R)から(R,G,B)に変換します。

im = cv2.imread(SRC_IMG_FILE, cv2.IMREAD_UNCHANGED)
im_rgb = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)

続いて、描画したい文字のフォント、サイズ、太さ、色、
描画する位置や描画する文字の内容などを指定していきます。
描画する文字の内容と文字色については、ユーザから取得しています。

これらの値を元に、cv2.putTextで画像に文字を描画します。
※cv2.putText()では、日本語は描画できないのでご注意ください。

font = cv2.FONT_HERSHEY_SIMPLEX
fontScale = 10.0
thickness = 5
input_color = int(input("文字の色を選択してください(1:赤,2:青,3:緑):"))
org = (500, 700)
moji = input("描画したい文字列(日本語は不可)を入力:")

if input_color == 1:
    color = (255,0,0)
elif input_color == 2:
    color = (0,0,255)
elif input_color == 3:
    color = (0,255,0)

cv2.putText(im_rgb, moji, org, font, fontScale, color, thickness, cv2.LINE_AA)

最後に、Matplotlibで画像を表示します。

plt.axis('off')
plt.imshow(im_rgb)

実行結果

結果はこのようになります!もふもふで可愛いですね。
rabbit.png

おわりに

今回は、OpenCVで画像に文字を描画してみました。
何か問題などがございましたら、ご指摘いただけますと幸いです。宜しくお願い致します!

最後までお読みいただき、ありがとうございました。
MYJLab Advent Calendar 2021には面白い記事がたくさんあるので、是非ご覧ください!

参考

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?