import os from options.test_options import TestOptions from data import CreateRecursiveDataLoader from models import create_model from util.visualizer import Visualizer from util.util import mkdirs from util import html from shutil import move, copyfile from PIL import Image, ImageOps from skimage.transform import resize from scipy.misc import imresize from shutil import copyfile import numpy as np import subprocess from time import sleep if __name__ == '__main__': opt = TestOptions().parse() opt.nThreads = 1 # test code only supports nThreads = 1 opt.batchSize = 1 # test code only supports batchSize = 1 opt.serial_batches = True # no shuffle opt.no_flip = True # no flip opt.experiment = opt.start_img.split("/")[-1].split(".")[0] render_dir = opt.results_dir + opt.name + "/exp:" + opt.experiment + "/" mkdirs(render_dir) copyfile(opt.start_img, render_dir + "frame_00000.png") data_loader = CreateRecursiveDataLoader(opt) dataset = data_loader.load_data() ds = dataset.dataset model = create_model(opt) visualizer = Visualizer(opt) # create website web_dir = os.path.join(opt.results_dir, opt.name, '%s_%s' % (opt.phase, opt.which_epoch)) webpage = html.HTML(web_dir, 'Experiment = %s, Phase = %s, Epoch = %s' % (opt.name, opt.phase, opt.which_epoch)) # test print(dataset.name()) last_im = None for i, data in enumerate(data_loader): if i >= opt.how_many: break model.set_input(data) model.test() visuals = model.get_current_visuals() img_path = model.get_image_paths() print('%04d: process image... %s' % (i, img_path)) ims = visualizer.save_images(webpage, visuals, img_path, aspect_ratio=opt.aspect_ratio) if dataset.name() == 'RecursiveDatasetDataLoader': # print(visuals.keys()) im = visuals['fake_B'] save_path = render_dir + "frame_{:05d}_tmp.png".format(i+1) final_path = render_dir + "frame_{:05d}.png".format(i+1) # s = 256 # p = 8 # im = imresize(im, (s-p, s-p), interp='bicubic') # image_pil = Image.fromarray(im) # image_pil = ImageOps.expand(image_pil, p) # image_pil.save(save_path) # copyfile(save_path, final_path) if i < 1: im /= 2 tmp_im = np.copy(im/2) im += last_im last_im = tmp_im image_pil = Image.fromarray(im) image_pil.save(save_path) os.rename(save_path, final_path) webpage.save() os.remove(render_dir + "frame_00000.png") cmd = ("/usr/bin/ffmpeg", "-i", render_dir + "/frame_%05d.png", "-y", "-c:v", "libx264", "-vf", "fps=30", "-pix_fmt", "yuv420p", render_dir + opt.name + "_" + opt.experiment + ".mp4") process = subprocess.Popen(cmd, stdout=subprocess.PIPE) output, error = process.communicate() cmd = ("scp", render_dir + opt.name + "_" + opt.experiment + ".mp4", "jules@asdf.us:asdf/neural/") process = subprocess.Popen(cmd, stdout=subprocess.PIPE) output, error = process.communicate() print("\n") print("https://asdf.us/neural/" + opt.name + "_" + opt.experiment + ".mp4")