def make_edge_smooth(dataset_name, img_size) : check_folder(os.path.dirname(os.path.dirname(__file__))+'/dataset/{}/{}'.format(dataset_name, 'smooth')) file_list = glob(os.path.dirname(os.path.dirname(__file__))+'/dataset/{}/{}/*.*'.format(dataset_name, 'style')) save_dir = os.path.dirname(os.path.dirname(__file__))+'/dataset/{}/smooth'.format(dataset_name) kernel_size = 5 kernel = np.ones((kernel_size, kernel_size), np.uint8) gauss = cv2.getGaussianKernel(kernel_size, 0) gauss = gauss * gauss.transpose(1, 0) for f in tqdm(file_list) : file_name = os.path.basename(f) bgr_img = cv2.imread(f) gray_img = cv2.imread(f, 0) bgr_img = cv2.resize(bgr_img, (img_size, img_size)) pad_img = np.pad(bgr_img, ((2, 2), (2, 2), (0, 0)), mode='reflect') gray_img = cv2.resize(gray_img, (img_size, img_size)) edges = cv2.Canny(gray_img, 100, 200) dilation = cv2.dilate(edges, kernel) gauss_img = np.copy(bgr_img) idx = np.where(dilation != 0) for i in range(np.sum(dilation != 0)): gauss_img[idx[0][i], idx[1][i], 0] = np.sum( np.multiply(pad_img[idx[0][i]:idx[0][i] + kernel_size, idx[1][i]:idx[1][i] + kernel_size, 0], gauss)) gauss_img[idx[0][i], idx[1][i], 1] = np.sum( np.multiply(pad_img[idx[0][i]:idx[0][i] + kernel_size, idx[1][i]:idx[1][i] + kernel_size, 1], gauss)) gauss_img[idx[0][i], idx[1][i], 2] = np.sum( np.multiply(pad_img[idx[0][i]:idx[0][i] + kernel_size, idx[1][i]:idx[1][i] + kernel_size, 2], gauss)) cv2.imwrite(os.path.join(save_dir, file_name), gauss_img)
def check_args(args): # check folder check_folder(args.checkpoint_dir) check_folder(args.result_dir) check_folder(args.log_dir) # check hyperparameter assert args.epoch >= 1, 'epochs must >= 1 ...' assert args.batch_size >= 1, 'batch size must >= 1 ...' assert args.z_dim >= 1, 'dimension of noise vector must >= 1' return args
pbar = tqdm(total=total) vid.set(cv2.CAP_PROP_POS_FRAMES, 0) while ret: ret, frame = vid.read() if frame is None: print('Warning: got empty frame.') continue img = convert_image(frame, img_size) fake_img = sess.run(test_generated, feed_dict={test_real: img}) fake_img = inverse_image(fake_img) if if_adjust_brightness: fake_img = cv2.cvtColor(adjust_brightness_from_src_to_dst(fake_img, frame), cv2.COLOR_BGR2RGB) else: fake_img = cv2.cvtColor(fake_img, cv2.COLOR_BGR2RGB) fake_img = cv2.resize(fake_img, (width, height)) out.write(fake_img) pbar.update(1) pbar.close() vid.release() # cv2.destroyAllWindows() return os.path.join(output, vid_name) if __name__ == '__main__': arg = parse_args() check_folder(arg.output) info = cvt2anime_video(arg.video, arg.output, arg.checkpoint_dir, output_format=arg.output_format, if_adjust_brightness=arg.if_adjust_brightness) print(f'output video: {info}')