File size: 3,032 Bytes
3d5e231
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
from PIL import Image
import os
import random
import numpy as np
import json

pororo_source_frame_paths = {
    'Pororo': '/playpen-ssd/adyasha/projects/StoryGAN/pororo_png/Pororo_ENGLISH1_2/Pororo_ENGLISH1_2_ep6/12.png',
    'Loopy': '/playpen-ssd/adyasha/projects/StoryGAN/pororo_png/Pororo_ENGLISH1_1/Pororo_ENGLISH1_1_ep12/26.png',
    'Crong': '/playpen-ssd/adyasha/projects/StoryGAN/pororo_png/Pororo_ENGLISH1_1/Pororo_ENGLISH1_1_ep12/10.png',
    'Poby': '/playpen-ssd/adyasha/projects/StoryGAN/pororo_png/Pororo_ENGLISH1_1/Pororo_ENGLISH1_1_ep9/34.png',
    'Eddy': '/playpen-ssd/adyasha/projects/StoryGAN/pororo_png/Pororo_ENGLISH1_1/Pororo_ENGLISH1_1_ep12/46.png',
    'Petty': '/playpen-ssd/adyasha/projects/StoryGAN/pororo_png/Pororo_ENGLISH2_1/Pororo_ENGLISH2_1_ep1/34.png',
    'Tongtong': '/playpen-ssd/adyasha/projects/StoryGAN/pororo_png/Pororo_ENGLISH3_1/Pororo_ENGLISH3_1_ep7/8.png',
    'Rody': '/playpen-ssd/adyasha/projects/StoryGAN/pororo_png/Pororo_ENGLISH3_1/Pororo_ENGLISH3_1_ep6/66.png',
    'Harry': '/playpen-ssd/adyasha/projects/StoryGAN/pororo_png/Pororo_ENGLISH3_1/Pororo_ENGLISH3_1_ep7/39.png',
}


flintstones_source_frame_paths = {
    "Wilma": '',
    "Fred": '',
    "Betty": '',
    "Barney": '',
    "Dino": '',
    "Pebbles": '',
    "Mr Slate": ''
}


def sample_image(im):
    shorter, longer = min(im.size[0], im.size[1]), max(im.size[0], im.size[1])
    video_len = int(longer / shorter)
    se = np.random.randint(0, video_len, 1)[0]
    return im.crop((0, se * shorter, shorter, (se + 1) * shorter))


def get_pororo_source_frames():

    # sample_image(Image.open(os.path.join(img_folder, tgt_img_path)).convert('RGB'))
    # labels = np.load('../../StoryGAN/pororo_png/labels.npy', allow_pickle=True, encoding='latin1').item()
    # for i in range(9):
    #     print(i)
    #     individual_frames = [(k, v) for k, v in labels.items() if v[i] == 1 and not any([v[j] == 1 for j in range(9) if j!=i])]
    #     print(random.sample(individual_frames, k=10))

    for k, v in pororo_source_frame_paths.items():

        img = sample_image(Image.open(v).convert('RGB'))
        img.save(k + '.png')


def get_flintstones_source_frames():

    dir_path = '../../StoryGAN/flintstones'
    annotations = json.load(open('../../StoryGAN/flintstones/flintstones_annotations_v1-0.json', 'r'))
    for k in flintstones_source_frame_paths.keys():

        if k != "Barney":
            continue

        character_frames = []
        for sample in annotations:
            sample_characters = [c["entityLabel"].strip().lower() for c in sample["characters"]]
            if sample_characters[0] == k.lower():
                character_frames.append(sample["globalID"])

        globalID = random.choice(character_frames)
        arr = np.load(os.path.join(dir_path, 'video_frames_sampled', globalID + '.npy'))
        n_frames = arr.shape[0]
        im = arr[random.randrange(n_frames)]
        im = Image.fromarray(im)
        im.save(k.replace(' ', '') + '.png')

get_flintstones_source_frames()