diff --git a/bin/waifu2x_converter.py b/bin/waifu2x_converter.py new file mode 100755 index 0000000..854d0a9 --- /dev/null +++ b/bin/waifu2x_converter.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Name: Waifu2x Converter CPP Driver +Author: K4YT3X +Date Created: February 8, 2019 +Last Modified: February 8, 2019 + +Description: This class controls waifu2x +engine + +Version 1.0.0 +""" +from avalon_framework import Avalon +import subprocess +import threading + + +class Waifu2xConverter: + """This class communicates with waifu2x cui engine + + An object will be created for this class, containing information + about the binary address and the processing method. When being called + by the main program, other detailed information will be passed to + the upscale function. + """ + + def __init__(self, waifu2x_path): + self.waifu2x_path = waifu2x_path + self.print_lock = threading.Lock() + + def upscale(self, folderin, folderout, scale_ratio, threads): + """ Waifu2x Converter Driver Upscaler + This method executes the upscaling of extracted frames. + + Arguments: + folderin {string} -- source folder path + folderout {string} -- output folder path + scale_ratio {int} -- frames' scale ratio + threads {int} -- number of threads + """ + + # Print thread start message + self.print_lock.acquire() + Avalon.debug_info('[upscaler] Thread {} started'.format(threading.current_thread().name)) + self.print_lock.release() + + # Create string for execution + execute = '\"{}\\waifu2x-converter-cpp.exe\" -i \"{}\" -o {} --scale_ratio {} --noise_level 3 -m noise_scale -j {} --model_dir {}\\models_rgb'.format( + self.waifu2x_path, folderin, folderout, scale_ratio, threads, self.waifu2x_path) + subprocess.call(execute) + + # Print thread exiting message + self.print_lock.acquire() + Avalon.debug_info('[upscaler] Thread {} exiting'.format(threading.current_thread().name)) + self.print_lock.release()