Python

【Pythonで作業自動化】画像処理編 〜複数画像を連続でトリミングしていく〜

皆さんは画像をトリミングしたい時どうしていますか。

数が少なければ一つ一つ処理していけば良いですが、トリミング量を揃えたりしていると意外に時間がかかるものです。

そこで、本記事ではプログラミング初心者向けにPythonを使ったサンプル例を紹介します。

エクセルやパワーポイント、それ以外のソフトでもトリミングする事ができますが、
Pythonはコードの中身がシンプルで初心者でも見よう見まねでやってみると形になると思います。

下記ファイルと同じフォルダ内にある画像データ(デフォルト:jpg)を一気にトリミングしていくプログラム例です。

出力ファイル名はnameで指定+連番となる(例:test-out0, test-out1, test-out2,・・・)

§トリミング前画像

§トリミング後画像

★部分を変えてサイズや余白を調整

width=横のサイズ

height=縦のサイズ

left=左の余白

upper=上の余白

righgt=右の余白

lower=下の余白

from PIL import Image
import os, glob
import matplotlib.pyplot as plt

path = './'
name ='test-out'
i = 0
   
def crop_center(pil_img, crop_width, crop_height, left, top, right,down):
    img_width, img_height = pil_img.size
    return pil_img.crop(((img_width - crop_width + left) // 2,
                         (img_height - crop_height +top) // 2,
                         (img_width + crop_width + right) // 2,
                         (img_height + crop_height + down) // 2))

for infile in glob.glob( os.path.join(path, '*.jpg') ):
    imgname= name + str(i)
    i = i +1
    im = Image.open(infile)
    #plt.figure(figsize=(57, 57))# トリミング前の解像度を変えたい時
    im_new = crop_center(im, 450, 1200,70,680,-70,-710) #★
    #★部分の数値意味(width,height,left, upper, right, lower)    
        
    plt.tick_params(labelbottom="off",bottom="off") # x軸の削除
    plt.tick_params(labelleft="off",left="off") # y軸の削除
    plt.box("off") #枠線の削除
    plt.axis('off')  #枠線の削除
    plt.imshow(im_new)
    plt.savefig(imgname + '.jpg', bbox_inches="tight", pad_inches=0.0)

★Pythonは機械学習やAI作成でよく使われる言語です。

勉強でおすすめする本についても紹介しています。

【資格取得におすすめ】機械学習・AI・ディープラーニングについて理解できる本ランキング 今回は機械学習・AI・ディープラーニングについて理解できる本を紹介します。 日本ディープラーニング協会が主催するG検定の資格取得での勉...
ABOUT ME
Mickey@コーヒー好きエンジニア
【製造業×プログラミング×AI】Python/VBAを活用した業務改善、Streamlit/Plotlyを活用したWebアプリ開発について初心者向けに発信中|Wordpressブログを運営しながらHTML/CSSの勉強中|趣味は自家焙煎コーヒー作り|noteでは焙煎理論を発信