显示GIF并等待按键

时间:2018-12-10 11:16:45

标签: python python-3.x matplotlib

我正在尝试使图像序列的标签自动化。我需要根据一定数量对它们进行排序,这可以由操作员轻松找到。

我的想法是为每个序列显示一个gif(在屏幕上弹出),让操作员按数字键,然后将序列复制到正确的位置,然后弹出另一个gif,等等。

现在,我设法显示gif并等待按下按钮,但是我无法获得所按下的确切键...

任何想法该怎么做?而且我希望能够将gif放在前面而不是在终端上时按下键...

这是我的代码:

    fig = plt.figure()
    for img in sequence:
        im = plt.imshow(img_array,animated=True,cmap='gray')
        ims.append([im])

    ani = animation.ArtistAnimation(fig,ims,interval=50,blit=True,repeat_delay=1000)
    plt.draw()
    plt.pause(1)
    n = raw_input("how many?")
    plt.close(fig) ## shows all the gifs at once, opening multiple windows.

1 个答案:

答案 0 :(得分:1)

我认为您不想在这里使用动画,因为那样只会给用户有限的固定时间来决定按下某个键。而是使用按键来触发对下一张图像的更改。

import numpy as np
import matplotlib.pyplot as plt

images = [np.random.rand(10,10) for i in range(13)]

fig, ax = plt.subplots()

im = ax.imshow(images[0], vmin=0, vmax=1, cmap='gray')

curr = [0]
def next_image(evt=None):
    n = int(evt.key)
    # do something with current image
    print("You pressed {}".format(n))
    # advance to next image
    if curr[0] < len(images)-1:
        curr[0] += 1
        im.set_array(images[curr[0]])
        fig.canvas.draw_idle()
    else:
        plt.close()

fig.canvas.mpl_connect("key_press_event", next_image)        
plt.show()