【Python】画像の指定位置に矩形表示を追加する

AIで画像を判定して顔のある場所に赤い矩形表示をする、というのを見たことがあるのではないでしょうか。
ちょっとステップを踏んで、まずはAI判定はおいといて矩形表示はどうしてるんだろう?という方向けに、
Pythonで画像に矩形表示を追加する方法を調べてみました。

youtube流しながら自動で顔認識して矩形表示しているの、カッコいいですよね~。あれ、やりたいんだけど、まずは静止画に普通に付け足す方法から知りたい!という方向けです。

やること
・opencvをインストールする
・画像を読み込む
・画像に矩形表示を追加する
・画像を表示する
・画像をファイル出力する

それでは順番に見ていきましょう!

目次

順番にみていく

opencvをインストールする

画像の読み込み、編集にopencvモジュールを使います。
まだインストールしていなければ、pipを使ってインストールします。

pip install opencv-python

執筆時点の関連ファイルは次のようです。上記コマンドでインストールできない方は、PyPIからファイルをダウンロードして個別インストールもできます。

・opencv_python-4.7.0.72-cp37-abi3-win_amd64.whl
・numpy-1.24.3-cp311-cp311-win_amd64.whl

画像を読み込む

サンプル画像はこちらを使いました。

opencvを利用して画像を読み込みます。(target.jpg)

import cv2

image = cv2.imread('target.jpg')


サンプル画像はこちらのサイトからお借りしました。フリーの画像素材を提供してくださっています。超優良サイトです。

画像に矩形表示を追加する

先ほど読み込んだ画像データ(image)に、矩形を追加します。
矩形の左上と右下の2点を指定しています。

import cv2

# 矩形を描画する
pt1 = (750, 200)  # 左上隅の座標
pt2 = (1250, 650)  # 右下隅の座標
color = (0, 0, 255)  # B, G, R
thickness = 2  # 枠線の太さは2
cv2.rectangle(image, pt1, pt2, color, thickness)

ちなみに顔認識はしていません!概要で述べたとおりです。
座標値をぽちぽちといじって、顔部分に矩形が来るように調整したものです。

画像を表示する

画像データ(image)を表示します。

import cv2

# 画像を表示する
cv2.imshow('image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

実行結果がこちらです。
画像データ(image)をウィンドウで画像表示しています。
ワンちゃんの顔部分に赤い矩形表示を追加されています。


画像をファイル出力する

表示するだけでなくて、画像ファイルとして出力したいんだ!というケースがありますよね。
jpg画像としてファイル出力したいと思います。

import cv2

# 画像ファイルに出力する
cv2.imwrite('./target-after.jpg', image)

画像データ(image)を「target-after.jpg」というファイル名で出力しています。

サンプルコード

これらを合体したものがこちらです。

import cv2

#image = cv2.imread('path/to/image.jpg')
image = cv2.imread('target.jpg')

# 矩形を描画する
pt1 = (750, 200)  # 左上隅の座標
pt2 = (1250, 650)  # 右下隅の座標
color = (0, 0, 255)  # B, G, R
thickness = 2  # 枠線の太さは2
cv2.rectangle(image, pt1, pt2, color, thickness)

# 画像を表示する
cv2.imshow('image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 画像ファイルに出力する
cv2.imwrite('./target-after.jpg', image)

opencvモジュールがほとんどの仕事をしてくれているので、とても簡潔ですね!

以上となります。
少しでもお役に立てれば幸いです。
それでは、読んで頂きありがとうございました!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次