File size: 2,830 Bytes
872b0a0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
76
77
78
79
80
81
82
83
84
85
86
87
import numpy as np
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider, Button


def display(results, image_names, title="Flow eval"):
    image_grids = []
    num_images = len(results[0])
    num_rows = len(results[0][0])
    num_cols = len(results)

    image_grids = []
    for i in range(num_images):
        image_grid = []
        for image_lists in results:
            image_grid.append(image_lists[i])
        image_grids.append(image_grid)

    fig = plt.figure(facecolor='grey')
    fig.suptitle(title)
    mng = plt.get_current_fig_manager()
    mng.resize(*mng.window.maxsize())
    imshow_images = []
    plt.subplots_adjust(wspace=0, hspace=0.03)

    imshow_image_lists = []
    for j, image_col in enumerate(image_grids[0]):
        imshow_images = []
        for i, t in enumerate(zip(image_names, image_col)):
            title, image = t
            ax = fig.add_subplot(num_rows, num_cols, i * num_cols + j + 1)
            if j == 0:
                ax.set_ylabel(title)
            ax.set_yticks([])
            ax.set_xticks([])
            if np.size(image, 3) == 1:
                imshow_images.append(ax.imshow(image[0, :, :, 0], "gray"))
            else:
                imshow_images.append(ax.imshow(image[0, :, :, :]))
        imshow_image_lists.append(imshow_images)

    def display_example(index):
        for j, image_col in enumerate(image_grids[int(index)]):
            imshow_images = imshow_image_lists[j]
            for im, image in zip(imshow_images, image_col):
                if np.size(image, 3) == 1:
                    im.set_data(image[0, :, :, 0])
                else:
                    im.set_data(image[0, :, :, :])
        plt.draw()

    current_index = 0

    next_button_ax = fig.add_axes([0.8, 0.025, 0.1, 0.04])
    next_button = Button(next_button_ax, 'next')
    prev_button_ax = fig.add_axes([0.7, 0.025, 0.1, 0.04])
    prev_button = Button(prev_button_ax, 'previous')
    slider_ax  = fig.add_axes([0.1, 0.025, 0.55, 0.04])
    slider = Slider(slider_ax, 'Page', 0, num_images - 1,
                    valinit=1, valfmt='%0.0f')

    def next_button_on_clicked(mouse_event):
        nonlocal current_index
        if current_index < num_images - 1:
            current_index += 1
            slider.set_val(current_index)

    def prev_button_on_clicked(mouse_event):
        nonlocal current_index
        if current_index > 0:
            current_index -= 1
            slider.set_val(current_index)

    def sliders_on_changed(val):
        nonlocal current_index
        current_index = val
        display_example(val)

    slider.on_changed(sliders_on_changed)
    prev_button.on_clicked(prev_button_on_clicked)
    next_button.on_clicked(next_button_on_clicked)

    plt.draw()
    plt.show()