(作業メモ)pythonで画像のサイズを変更することと画像を反転鏡映させること

19 1月

python で画像のサイズを変更する。もともとが正方形のサイズでもないので、アスペクト比が変わるのですが、多少カットしながらサイズを正方形に変更します。コードは下記の参考サイトそのままです。

参考サイト

やることは、まず melon と melon100 というフォルダーがあって、melon の方に元画像があり、その中心部を正方形に切り出して、サイズを 100 x 100 の画像に変換して melon100 に書き出します。

# coding: utf-8
import sys, os
import numpy as np
import matplotlib.pyplot as plt
from dataset.imgnet import load_imgnet

from PIL import Image, ImageDraw, ImageFilter
import pickle
import glob


def crop_center(pil_img, crop_width, crop_height):
    img_width, img_height = pil_img.size
    return pil_img.crop(((img_width - crop_width) // 2,
                         (img_height - crop_height) // 2,
                         (img_width + crop_width) // 2,
                         (img_height + crop_height) // 2))

def crop_max_square(pil_img):
    return crop_center(pil_img, min(pil_img.size), min(pil_img.size))



thumb_width = 100

#全画像のファイル名を取得
melons = glob.glob('melon/*.jpg')

for key, value in enumerate(melons):
	im = Image.open(value)

	im_thumb = crop_max_square(im).resize((thumb_width, thumb_width), Image.LANCZOS)

	im_thumb.save('melon100/' + 'melon' + str(key) + '.jpg', quality=95)

画像を水増しするために反転したものや鏡映したものを作る。

# coding: utf-8
import sys, os
sys.path.append(os.pardir)  # 親ディレクトリのファイルをインポートするための設定
import numpy as np
import matplotlib.pyplot as plt
from dataset.imgnet import load_imgnet
from PIL import Image, ImageDraw, ImageFilter

im = Image.open("./apple943.jpg")

#画像をarrayに変換
im_list = []
tmpA = np.asarray(im).copy()
im_list.append(tmpA)

tmpB = np.flipud(tmpA.copy())
tmpC = np.fliplr(tmpA.copy())

im_list.append(tmpB)
im_list.append(tmpC)

tmpD = np.flipud(tmpC.copy())
im_list.append(tmpD)

#貼り付け
for i in range(4):
	plt.imshow(im_list[i])
	#表示
	plt.show()

	#im_list4 = im_list4.tolist()

	tmpImage = Image.fromarray(im_list[i])

	tmpImage.save("./apple943-" + str(i) + ".jpg", quality=95)