image-recognition/src/ImagePreprocessing.py

54 lines
1.8 KiB
Python

import glob, os
from PIL import Image, ImageOps
import argparse
from pathlib import Path
import tqdm
max_size = 1050
def resize_img(src, dest):
if not os.path.isdir(dest):
os.mkdir(dest)
res_folder = os.path.join(dest, 'resized')
if not os.path.isdir(res_folder):
os.mkdir(res_folder)
bw_folder = os.path.join(dest, 'bw')
if not os.path.isdir(bw_folder):
os.mkdir(bw_folder)
paths = Path(src).rglob('*.*')
paths_list = list(paths)
for path in tqdm.tqdm(paths_list):
#print(path.name)
id, _ = os.path.splitext(path.name)
outfile_res = os.path.join(res_folder, id + ".jpg")
outfile_bw = os.path.join(bw_folder, id + ".jpg")
try:
im = Image.open(path)
if im.mode in ("RGBA", "P"):
im = im.convert("RGB")
width, height = im.size
if width > max_size or height > max_size:
im.thumbnail((max_size, max_size), Image.ANTIALIAS)
im.save(outfile_res, "JPEG")
im = ImageOps.grayscale(im)
im.save(outfile_bw, "JPEG")
except IOError:
print("cannot process '%s'" % path)
pass
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Image resizing')
parser.add_argument('src', type=str, help='images source folder path')
parser.add_argument('dest', type=str, help='images dest folder path')
args = parser.parse_args()
resize_img(args.src, args.dest)
#resize_img('/media/Data/data/test/gem/img/originals/export_Immagini_SitoPubblico', '/media/Data/data/test/gem/img/export_Immagini_SitoPubblico_resized_bw_auto')
#resize_img('/media/Data/data/test/gem/img/originals/ImmaginiComparazioni', '/media/Data/data/test/gem/img/ImmaginiComparazioni_resized_bw_autocontrast')