コード例 #1
0
def upscale(args, selected_experiment_folder):
    target_image = Image.open(
        os.path.join(selected_experiment_folder, "target.png"))

    upscaling_factor = args.upscaling_factor
    original_emoji_size = (args.emoji_size, args.emoji_size)
    original_image_size = target_image.size

    upscaled_emoji_size = (
        original_emoji_size[0] * upscaling_factor,
        original_emoji_size[1] * upscaling_factor,
    )
    upscaled_image_size = (
        original_image_size[0] * upscaling_factor,
        original_image_size[1] * upscaling_factor,
    )

    upscaled_emojies = get_emojies(size=upscaled_emoji_size[0])

    stored_individual_paths = get_file_paths(selected_experiment_folder,
                                             file_extensions=("pkl", ))
    stored_individual_paths.sort(key=lambda f: f.name)
    best_stored_individual_path = stored_individual_paths[-1]
    genotype = joblib.load(best_stored_individual_path)
    genotype[:, 1] *= upscaling_factor  # x
    genotype[:, 2] *= upscaling_factor  # y

    image = generate_alpha_image_from_scratch(genotype, upscaled_image_size,
                                              upscaled_emojies)
    image.save(
        os.path.join(selected_experiment_folder,
                     best_stored_individual_path.stem + "_upscaled.png"))
    print("Done")
コード例 #2
0
def get_emojies(size):
    emoji_paths = get_file_paths(EMOJI_DIR)
    emojies = []
    for path in emoji_paths:
        emoji = Image.open(path).resize((size, size), Image.LANCZOS)
        emojies.append(emoji)
    return emojies
コード例 #3
0
ファイル: gif.py プロジェクト: ValRCS/emoji-art-generator
def make_gif(folder, max_num_frames=16):
    frame_paths = get_file_paths(folder)
    frame_paths = [p for p in frame_paths if p.name != "target.png"]

    if len(frame_paths) > max_num_frames:
        frame_indexes = np.linspace(start=0,
                                    stop=len(frame_paths) - 1,
                                    endpoint=True,
                                    num=max_num_frames,
                                    dtype=np.int).tolist()
        frame_indexes = set(frame_indexes)
        frame_paths = [
            path for i, path in enumerate(frame_paths) if i in frame_indexes
        ]

    gif_output_path = os.path.join(folder, "evolution.gif")

    durations = [0.2] * len(frame_paths)
    durations[-1] = 1.5
    images = [imageio.imread(frame_path) for frame_path in frame_paths]
    imageio.mimsave(gif_output_path, images, duration=durations)
コード例 #4
0
ファイル: prune.py プロジェクト: ValRCS/emoji-art-generator
    target_image = Image.open(
        os.path.join(selected_experiment_folder, "target.png")).convert("RGB")

    upscaling_factor = 1
    original_emoji_size = (args.emoji_size, args.emoji_size)
    original_image_size = target_image.size
    upscaled_image_size = (
        original_image_size[0] * upscaling_factor,
        original_image_size[1] * upscaling_factor,
    )
    upscaled_emoji_size = (
        original_emoji_size[0] * upscaling_factor,
        original_emoji_size[1] * upscaling_factor,
    )

    stored_individual_paths = get_file_paths(selected_experiment_folder,
                                             file_extensions=("pkl", ))
    stored_individual_paths.sort(key=lambda f: f.name)
    best_stored_individual_path = stored_individual_paths[-1]
    genotype = joblib.load(best_stored_individual_path)

    upscaled_emojies = get_emojies(size=upscaled_emoji_size[0])

    fitness_evaluator = LABDeltaESSIMFitnessEvaluator(target_image)

    image = generate_image_from_scratch(genotype, upscaled_image_size,
                                        upscaled_emojies).convert("RGB")
    base_individual = Individual(image)
    fitness_evaluator.evaluate_fitness([base_individual])
    current_fitness = base_individual.fitness
    print("Base fitness: {}".format(current_fitness))
    current_genotype = genotype