小白写的,小白用,也是参考了网上的很多代码,感谢大佬们的贡献。
这个代码的目标是,把所有图片全部分辨率修改为128*128,在修改的同时并不会拉长图像,而是通过填充纯白色的方式来补充变形部分,有利于GAN的训练。
代码是python的,当时和星轨桑一起研究的,但是如何发挥工作已经忘记了,可以复制以后自行调试使用。
其中最后一段【cut_images('F:/date/JPG128enhance/', 'new', 128, 128)】是需要修改的目标文件夹,依照自己所需要转换的文件夹来使用,而128代表着需要修改的图片分辨率,举例子128,128代表着128*128分辨率的图片,如果需要其他图片分辨率就自己修改好了,小白的使用方法就是把这段代码复制到vscode里,修改好目标目录的地址,另存为一个.py的文件,然后点击右上角的小三角运行代码即可。
# -*- coding: utf-8 -*- from PIL import Image from skimage import data_dir,io,transform,color import numpy as np import os def cut_images(dir_path, suffix, aspect_width, aspect_height): images = [os.path.join(dir_path, img) for img in os.listdir(dir_path)] for image in images: cut_image(image, suffix, aspect_width, aspect_height) def cut_image(image_file, suffix, aspect_width, aspect_height): img = Image.open(image_file) img_width = img.size[0] img_height = img.size[1] if (img_width / img_height) > (aspect_width / aspect_height): rate = aspect_width / img_width else: rate = aspect_height / img_height rate = round(rate, 1) img = img.resize((int(img_width * rate), int(img_height * rate))) result_image = Image.new("RGB", [aspect_width, aspect_height], (255, 255, 255, 255)) result_image.paste(img, (int((aspect_width - img.size[0]) / 2), int((aspect_height - img.size[1]) / 2))) save_img, extenstion = os.path.splitext(image_file) result_image.save(save_img + '_' + suffix + extenstion) print('[Done] '+image_file) if __name__ == "__main__": cut_images('F:/date/JPG128enhance/', 'new', 128, 128)
上面代码中这段话里面的 【result_image = Image.new("RGB", [aspect_width, aspect_height], (255, 255, 255, 255))】255,255,255,255代表着周围填充的颜色,如果不懂的同学可以查看这里:
255,255,255就代表着纯白,而0,0,0代表着纯黑
运行之后,如果报错:ModuleNotFoundError: No module named 'PIL'
请执行代码:pip install image
如果报错:ModuleNotFoundError: No module named 'skimage'
请执行:pip install scikit-image
意思是需要安装这个库,装上就好啦
当出现[Done] C:/XXXX/XXXXXXXX/XXXXXXX/XXXX/XXX\XXXXXXX.jpg
运行就成功了