小白写的,小白用,也是参考了网上的很多代码,感谢大佬们的贡献。

这个代码的目标是,把所有图片全部分辨率修改为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
运行就成功了