| import os |
| import argparse |
| import sys |
|
|
| import numpy as np |
| import matplotlib.pyplot as plt |
|
|
| from colorizator import MangaColorizator |
|
|
| def process_image(image, colorizator, args): |
| colorizator.set_image(image, args.size, args.denoiser, args.denoiser_sigma) |
| |
| return colorizator.colorize() |
| |
| def colorize_single_image(image_path, save_path, colorizator, args): |
| |
| image = plt.imread(image_path) |
|
|
| colorization = process_image(image, colorizator, args) |
| |
| plt.imsave(save_path, colorization) |
| |
| return True |
| |
|
|
| def colorize_images(target_path, colorizator, args): |
| images = os.listdir(args.path) |
| |
| for image_name in images: |
| file_path = os.path.join(args.path, image_name) |
| |
| if os.path.isdir(file_path): |
| continue |
| |
| name, ext = os.path.splitext(image_name) |
| if (ext != '.png'): |
| image_name = name + '.png' |
| |
| print(file_path) |
| |
| save_path = os.path.join(target_path, image_name) |
| colorize_single_image(file_path, save_path, colorizator, args) |
| |
| def parse_args(): |
| parser = argparse.ArgumentParser() |
| parser.add_argument("-p", "--path", required=True) |
| parser.add_argument("-gen", "--generator", default = 'networks/generator.zip') |
| parser.add_argument("-ext", "--extractor", default = 'networks/extractor.pth') |
| parser.add_argument('-g', '--gpu', dest = 'gpu', action = 'store_true') |
| parser.add_argument('-nd', '--no_denoise', dest = 'denoiser', action = 'store_false') |
| parser.add_argument("-ds", "--denoiser_sigma", type = int, default = 25) |
| parser.add_argument("-s", "--size", type = int, default = 576) |
| parser.set_defaults(gpu = False) |
| parser.set_defaults(denoiser = True) |
| args = parser.parse_args() |
| |
| return args |
|
|
| |
| if __name__ == "__main__": |
| |
| args = parse_args() |
| |
| if args.gpu: |
| device = 'cuda' |
| else: |
| device = 'cpu' |
| |
| colorizer = MangaColorizator(device, args.generator, args.extractor) |
| |
| if os.path.isdir(args.path): |
| colorization_path = os.path.join(args.path, 'colorization') |
| if not os.path.exists(colorization_path): |
| os.makedirs(colorization_path) |
| |
| colorize_images(colorization_path, colorizer, args) |
| |
| elif os.path.isfile(args.path): |
| |
| split = os.path.splitext(args.path) |
| |
| if split[1].lower() in ('.jpg', '.png', ',jpeg'): |
| new_image_path = split[0] + '_colorized' + '.png' |
| |
| colorize_single_image(args.path, new_image_path, colorizer, args) |
| else: |
| print('Wrong format') |
| else: |
| print('Wrong path') |
| |
|
|