こんにちは、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×Pillowでテキスト文章を画像に挿入
PythonのPillowライブラリをもとに、上図のように、画像にテキスト文章を挿入する方法も解説しています。
【Python】テキスト文字を画像に描画・フォントデザイン|Pillowによる画像処理
Pythonによる画像処理に興味がある方向けに「Pillowでテキストを画像に挿入する方法」を解説します。
【参考】Python・OpenCVを用いた画像処理
当サイトでは、PythonのOpenCVライブラリを用いた画像処理ノウハウを多数公開しています。
用途 | 【Python×OpenCV】記事名 |
---|---|
画像変換 | 画像のリサイズ・拡大・縮小 |
画像変換 | 画像の回転・反転・平行移動|アフィン変換 |
画像変換 | 画像の明るさ調節|ガンマ補正 |
画像変換 | グレースケール・HSV・L*a*b|色空間の変換 |
画像変換 | モノクロ(白黒)画像変換|2値化処理 |
画像変換 | ヒストグラムの描画・ヒストグラム均一化処理 |
画像変換 | 画像上にテキスト・図形(直線・長方形・円)を描画 |
画像変換 | 画像の透視変換・遠近法 |
画像変換 | 画像のノイズ除去・平滑化 |
画像変換 | 画像の畳み込み(空間フィルタリング) |
特徴抽出 | エッジの検出方法 |
画像認識や物体検出を学ぶ上でおすすめの教材はこちらをご参考ください。
画像処理・コンピュータビジョンの勉強におすすめ入門本・動画教材7選|OpenCV解析結果をディープラーニングに適用!
「画像処理・コンピュータビジョン分野に興味があり、画像処理のプログラミングスキルを習得したい」「OpenCVを用いた画像解析手法を学びたい」このような方向けにおすすめの教材を紹介します。
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら