PythonでPILやOpenCVを使って画像のトリミングをする方法

スポンサーリンク

今回は、Pythonで画像をトリミングする様々な方法に焦点を当てます。

では、画像を切り抜くために使用される背景となる関数を公開し、理解しましょう。


スポンサーリンク

テクニック1:Python PILで画像を切り抜く

PILとは、「Python Image Library」の略です。

PILは、Pythonインタプリタに画像編集・フォーマット機能を追加したものです。

そのため、画像操作やグラフ解析のための関数が多数内蔵されています。

PILは、画像の一部を矩形に切り取る Image.crop() 関数 を内蔵している。

構文は以下の通りです。

Image.crop(left, top, right, bottom)
  • topleft: これらのパラメータは,左上の座標を表します.つまり, (x,y) = (left, top) です.
  • と 右。これらのパラメータは、右下の座標を表します。つまり、 (x,y) = (right, bottom) となります。

切り出す領域は以下のように表現されます。

  • 左 <= x < 右
  • 上端 <= y < 下端

例えば、以下の様になります。

from PIL import Image
 
  
img = Image.open(r"C:UsersHPOneDriveDesktop<image>.png")
 
 
left = 0
top = 50
right = 510
bottom = 292
 
  
img_res = img.crop((left, top, right, bottom))
 
 
img_res.show()

上の例で、Image.open(r "image path") はPILの関数で、画像を読み込みモードでオープンするためのものです。

左、右、上、下の座標に特定の値を割り当てています。

Image.show() 関数は、切り出した画像を表示するために使います。

元の画像

import cv2

トリミングされた画像(出力):

image[start_x:end_x, start_y:end_y]

テクニック2:PythonでOpenCVを使って画像を切り抜く

PythonのOpenCVは、リアルタイムコンピュータビジョンのために利用可能な多くの関数を持つライブラリです。

画像処理や画像操作のための関数が豊富に含まれています。

OpenCV を用いて画像を処理するためには,バージョン3.0以上の OpenCV ライブラリをインストールする必要があります.

まず,以下のコードを用いて,プログラムに OpenCV ライブラリをインポートする必要があります.

import cv2
image = cv2.imread(r"C:UsersHPOneDriveDesktop<image>.png")
 
y=0
x=0
h=300
w=510
crop_image = image[x:w, y:h]
cv2.imshow("Cropped", crop_image)
cv2.waitKey(0)

OpenCV は,画像の切り出しの際に,配列として渡された画像のスライスを実際に行っています.

構文は以下の通りです.

Image Used For Cropping Purpose
Image Used For Cropping Purpose
  • image[] には,x, y 座標の開始と終了のインデックスを渡すことで,実際に画像を配列形式でスライスします.
  • したがって、x,y の開始座標と終了座標の間の画像が切り出し配列オブジェクトとして返される。

例えば、以下の様になります。

Cropped Image Using PIL
Cropped Image Using PIL

画像を読み込みモードでオープンするには,関数 cv2.imread(r "image path") を用います.

さらに,x軸とy軸の開始インデックスと終了インデックスが与えられるので,画像は切り取られます.

切り出された画像を表示するには,関数 cv2.imshow() を用います.ここでは,先ほどと同じ画像を用いています.

トリミングされた画像(出力)。

Cropped Image Using OpenCV
Cropped Image Using OpenCV

まとめ

以上、Pythonで画像を切り抜く方法について解説しました。


タイトルとURLをコピーしました