概述
主要功能:使用python代码裁剪批量图片
网上用python裁剪图片的代码有很多,但是往往没有考虑到图片裁剪不完的情况。举个例子,我有4096 * 1800的图片,想把它批量裁剪成1024 * 1024的图片,在宽度上刚好是4096/1024=4份,但在高度上1800/1024不能整除,为了保证图片的完整信息,这里我们只能进位,在高度上裁剪1800/1024 +1 =2份,因此一共裁剪成4 * 2 = 8张。
为了自己输入图像的方便就自己写了裁剪图像的代码,可以根据需求自己设置裁剪图像的大小,默认是裁剪出的图像宽高一致。
代码: crop.py
import os
from PIL import Image
def img_crop(img_path, save_path):
files = os.listdir(img_path)
for file in files:
a, b = os.path.splitext(file)
img = Image.open(os.path.join(img_path + "/" + file))
width, hight = img.size
w = 1024
id = 1
i = 0
padw = padh = 0
if width % w != 0:
padw = 1
if hight % w != 0:
padh = 1
while i + w <= hight:
j = 0
while j + w <= width:
new_img = img.crop((j, i, j + w, i + w))
new_img.save(save_path + a + "_" + str(id) + b)
id += 1
j += w
if padw == 1:
new_img = img.crop((width - w, i, width, i + w))
new_img.save(save_path + a + "_" + str(id) + b)
id += 1
i = i + w
if padh == 1:
j = 0
while j + w <= width:
new_img = img.crop((j, hight - w, j + w, hight))
new_img.save(save_path + a + "_" + str(id) + b)
id += 1
j += w
if padw == 1:
new_img = img.crop((width - w, hight - w, width, hight))
new_img.save(save_path + a + "_" + str(id) + b)
id += 1
if __name__ == '__main__':
img_path = '/home/xiaopeng/pythonProject/change_detection.pytorch/dataset/match2/test/'
save_path = '/home/xiaopeng/pythonProject/change_detection.pytorch/dataset/match2/test_crop/'
img_crop(img_path, save_path)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)