ITや趣味など気軽に投稿しています。

【Python】OpenCVで画像をトリミングする方法

今回は、読み込んだ画像のある部分を切り出す方法を紹介する。
トリミングと呼ばれる処理だな。

お願いします。

前提

今回もキツネの画像を使う。

キツネ

博士、キツネ好きですね。

この凛々しい感じがいい。テック君にはない目つきだ。

「凛々しい感じがいい」だけでよくないですか、

まあ、やりたいこととしては、このキツネの顔部分のみの画像にトリミングしたい。

画像のトリミング

早速だが、今回のコードを紹介する。

import cv2

path = "input/fox.jpg"
img = cv2.imread(path)
print(img.shape)


#切り取り範囲の指定
cropped_image = img[400:1500, 800:1700]
cv2.imshow("cropped", cropped_image)

cv2.waitKey(0)
cv2.destroyAllWindows()


>> (3280, 4928, 3)  <- img.shape

今までに見たコードばかりですね。
違いといえば、変数cropped_imageの部分?

左様。他の部分は画像の読み込みや表示など、これまでに紹介した内容だ。

スライスとは

画像のトリミング範囲は、スライスで指定する。

スライス?

Pythonの仕組みで、配列や文字列、タプルなどのシーケンスから指定部分を切り取ることができるものだ。

ちょ、なんか急に難しいです。

要は、配列など連続したデータのある部分だけを切り取って取得したい場合に便利な仕組みがスライスだな。

スライスを用いた画像トリミング

では、スライスを用いたトリミングの部分を見ていこう。

今回の画像は3280(縦)×4928(幅)の画像であるな。

print(img.shape)で確認してますね。

うむ。なので、スライスも3280×4928の範囲で残したい部分を指定することができる。範囲外を指定するとエラーになるぞ。

なるほど!例だとimg[400:1500, 800:1700]なので範囲内ですね。

トリミングした画像は以下のようになる。

キツネ(トリミング後)

顔だけの画像にトリミングされてます!お見事!

画像のトリミングについては以上だ。スライスで指定できるという点を覚えておいてほしい。

ラジャ!

では、今回はここまでだ。

ありがとうございました~~♪