【Python】画像上に図形・テキストを描画する方法|OpenCVによる画像処理入門

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

こんな方におすすめ
  • Pythonによる画像処理に興味がある。
  • OpenCVをもとに画像上に任意の「テキスト」や「図形」を描画できるようになりたい。
目次

OpenCVとは

OpenCV(Open Source Computer Vision Library)とは、画像処理やコンピュータビジョンの分野で広く活用されているオープンソースライブラリです。画像データの数値処理に強いのが特徴であり、高度な統計アルゴリズムも多数含まれていることから、近年機械学習の分野でも広く利用されています。

本記事ではPythonのOpenCVライブラリを用いて、画像上に「テキスト」や「図形」を描画する方法について解説します。

【Python】OpenCV|画像上にテキストイメージを記述

PythonのOpenCVライブラリを用いて画像上にテキストを記述したい場合、次のようなコードを実行します。

import cv2
import numpy as np

# 画像読込(真っ白画像)
img = np.ones((600,600,3)) * 255

# テキスト
cv2.putText(img,                       # 図形入力画像
            "DXCEL WAVE",              # テキスト文字
            (80,400),                  # テキスト配置座標
            cv2.FONT_HERSHEY_SIMPLEX,  # フォント
            5,                         # 文字サイズ
            (255,0,0),                 # カラーチャネル(B,G,R)
            9,                         # 文字の太さ
            cv2.LINE_AA                # フォント整形
           )

# 画像を表示
cv2.imshow("img",img)
cv2.waitKey(0)
cv2.destroyAllWindows()

【Python】OpenCV|画像上に直線・折線を描画

PythonのOpenCVライブラリを用いて画像上に直線または折線をそれぞれ描画したい場合、次のようなコードを実行します。

直線

import cv2
import numpy as np

# 画像読込(真っ白画像)
img = np.ones((600,600,3)) * 255

# 直線を描画   
cv2.line(img,         # 図形入力画像
         (100,100),   # 開始点の座標(X,Y)
         (300,400),   # 終了点の座標(X,Y)
         (0,0,255),   # カラーチャネル(B,G,R)
         10           # 直線の太さ
        )

# 画像を表示
cv2.imshow("img",img)
cv2.waitKey(0)
cv2.destroyAllWindows()

折線

import cv2
import numpy as np

# 画像読込(真っ白画像)
img = np.ones((600,600,3)) * 255

# 折線の座標を指定
plots = np.array([[50,50],[100,130],[150,180],[220,250]]) 

#折線を記述
cv2.polylines(img,            # 図形入力画像
              [plots],        # 折線の座標
              False,          # Trueの場合、折線の開始点と終点を繋げる
              (255,0,0),      # カラーチャネル(B,G,R)
              10              # セルの太さ
             )

# 画像を表示
cv2.imshow("img",img)
cv2.waitKey(0)
cv2.destroyAllWindows()

【Python】OpenCV|画像上に長方形・正方形を描画

PythonのOpenCVライブラリを用いて画像上に長方形または正方形を描画したい場合、次のようなコードを実行します。開始点座標および終点座標を修正することで任意の長方形・正方形を出力可能です。

import cv2
import numpy as np

# 画像読込(真っ白画像)
img = np.ones((600,600,3)) * 255

# 長方形・正方形を描画
cv2.rectangle(img,         # 図形入力画像
             (200,200),    # 開始点の座標(X,Y)
             (400,400),    # 終点の座標(X,Y)
             (255,0,0),    # カラーチャネル(B,G,R)
              10           # 直線の太さ
             )

# 画像を表示
cv2.imshow("img",img)
cv2.waitKey(0)
cv2.destroyAllWindows()

【Python】OpenCV|画像上に円・楕円を描画

PythonのOpenCVライブラリを用いて画像上に円または楕円をそれぞれ描画したい場合、次のようなコードを実行します。

import cv2
import numpy as np

# 画像読込(真っ白画像)
img = np.ones((600,600,3)) * 255

# 円を記述
cv2.circle(img,         # 図形入力画像
           (300,300),   # 開始点の座標(X,Y)
           80,          # 半径
           (0,0,255),   # カラーチャネル(B,G,R) 
           -1           # セルの太さ(-1にすると塗りつぶしになる)
          )   

# 画像を表示
cv2.imshow("img",img)
cv2.waitKey(0)
cv2.destroyAllWindows()

楕円

import cv2
import numpy as np

# 画像読込(真っ白画像)
img = np.ones((600,600,3)) * 255

# 楕円
cv2.ellipse(img,
            (300,300),   # 図形入力画像
            (150,100),   # 開始点(X,Y)
            50,          # 傾き
            20,          # 開始角度
            300,         # 終了角度
            (255,0,0),   # カラーチャネル(B,G,R)
            -1           # セルの太さ(-1にすると塗りつぶしになる)
           )

# 画像を表示
cv2.imshow("img",img)
cv2.waitKey(0)
cv2.destroyAllWindows()

【参考】Python・OpenCVを用いた画像処理

当サイトでは、PythonのOpenCVライブラリを用いた画像処理ノウハウを多数公開しています。

用途【Python×OpenCV】記事名
画像変換画像のリサイズ・拡大・縮小
画像変換画像の回転・反転・平行移動|アフィン変換
画像変換画像の明るさ調節|ガンマ補正
画像変換グレースケール・HSV・L*a*b|色空間の変換
画像変換モノクロ(白黒)画像変換|2値化処理
画像変換ヒストグラムの描画・ヒストグラム均一化処理
画像変換画像上にテキスト・図形(直線・長方形・円)を描画
画像変換画像の透視変換・遠近法
画像変換画像のノイズ除去・平滑化
画像変換画像の畳み込み(空間フィルタリング)
特徴抽出エッジの検出方法

画像認識や物体検出を学ぶ上でおすすめの教材はこちらをご参考ください。

最後に

この記事が気に入ったら
フォローしてね!

目次