diff --git a/requirements.txt b/requirements.txt index 788adf0..402f547 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,4 +3,5 @@ facexlib>=0.2.0.3 gfpgan>=0.2.1 numpy opencv-python +Pillow torch>=1.7 diff --git a/scripts/generate_multiscale_DF2K.py b/scripts/generate_multiscale_DF2K.py new file mode 100644 index 0000000..919c61f --- /dev/null +++ b/scripts/generate_multiscale_DF2K.py @@ -0,0 +1,46 @@ +import argparse +import glob +import os +from PIL import Image + + +def main(args): + + # For DF2K, we consider the following three scales, + # and the smallest image whose shortest edge is 400 + scale_list = [0.75, 0.5, 1 / 3] + shortest_edge = 400 + + path_list = sorted(glob.glob(os.path.join(args.input, '*'))) + for path in path_list: + print(path) + basename = os.path.splitext(os.path.basename(path))[0] + + img = Image.open(path) + width, height = img.size + for idx, scale in enumerate(scale_list): + print(f'\t{scale:.2f}') + rlt = img.resize((int(width * scale), int(height * scale)), resample=Image.LANCZOS) + rlt.save(os.path.join(args.output, f'{basename}T{idx}.png')) + + # save the smallest image which the shortest edge is 400 + if width < height: + ratio = height / width + width = shortest_edge + height = int(width * ratio) + else: + ratio = width / height + height = shortest_edge + width = int(height * ratio) + rlt = img.resize((int(width), int(height)), resample=Image.LANCZOS) + rlt.save(os.path.join(args.output, f'{basename}T{idx+1}.png')) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--input', type=str, default='datasets/DF2K/DF2K_HR', help='Input folder') + parser.add_argument('--output', type=str, default='datasets/DF2K/DF2K_multiscale', help='Output folder') + args = parser.parse_args() + + os.makedirs(args.output, exist_ok=True) + main(args) diff --git a/setup.cfg b/setup.cfg index 2293ad7..4dbe63d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -17,6 +17,6 @@ line_length = 120 multi_line_output = 0 known_standard_library = pkg_resources,setuptools known_first_party = realesrgan -known_third_party = basicsr,cv2,numpy,torch +known_third_party = PIL,basicsr,cv2,numpy,torch no_lines_before = STDLIB,LOCALFOLDER default_section = THIRDPARTY