如何设置matplotlib来显示数组的每个图像?

时间:2015-11-16 18:42:17

标签: python opencv matplotlib

如何设置matplotlib以显示数组的每个图像?

我希望每当我点击右箭头,它就会显示下一张图像等等......

这可能吗?

width = 14
height = 14

import matplotlib.pyplot as plt
import matplotlib.image as mpimg

data_images = X_train.reshape(X_train.shape[0],width,height)

print "Shape " ,data_images.shape #Shape  (50000L, 14L, 14L)

plt.imshow(data_images[0])
plt.show()

我想将 “data_images” 变量传递给plt.imshow,所以每当我点击matplotlib上的下一个时,它都会显示下一张图片。

3 个答案:

答案 0 :(得分:1)

plt.connect()的工作示例。

您可以按任意键更改图像。

import matplotlib.pyplot as plt

data_images = [
    [[1,2,3],[1,2,3],[1,2,3]],
    [[1,1,1],[2,2,2],[3,3,3]],
    [[1,2,1],[2,2,2],[1,2,1]],
]

#----------------------------------

index = 0

def toggle_images(event):
    global index

    index += 1

    if index < len(data_images):
        plt.imshow(data_images[index])
        plt.draw()
    else:        
        plt.close()

#----------------------------------

plt.imshow(data_images[index])

plt.connect('key_press_event', toggle_images)
plt.show()

答案 1 :(得分:1)

我会在IPython笔记本中使用ipywidgets来完成此操作。这是一个例子:

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
from ipywidgets import interact

images = np.random.random((500, 14, 14))

def browse_images(images):
    N = images.shape[0]
    def view_image(i=0):
        plt.imshow(images[i], cmap='gray', interpolation='nearest')
        plt.title('Image {0}'.format(i))
    interact(view_image, i=(0, N-1))

browse_images(images)

编辑:笔记本页面中的结果将如下所示:

enter image description here

您可以按向左或向右箭头前进滑块并查看下一张图像。

答案 2 :(得分:1)

在笔记本中你可以比使用内联更好一些:

View

然后在下一个单元格中

View

这将为您提供一个pannable / zoom数字。在mpl 1.5.0中,您还可以默认获取光标下的像素值。

(我在tmpnb.org上测试过这个)