Я пытался найти слайдер изображений с помощью matplotlib и нашел его здесь , и я попытался передать его своим массивом массивом 3D (44,640,640)
numpy, созданным из 2D-изображений tiff (с использованием. Я не видел никакого дисплея. Но когда я загружаю функцию произвольно созданным массивом, например array = np.random.randint(0,256,(44,640,640))
, я могу отображать изображения и плавно перемещаться по нему. Следовательно, мне интересно, каковы «фундаментальные различия» между этими двумя массивами .
Есть у кого-нибудь идея?
Спасибо,
Что я использовал для создания своего numpy массива:
def load_data(path):
files = glob(path+"/*")
array = []
for index, image in enumerate(files):
array.append(np.array(Image.open(files[index])))
array = np.array(array)
return array
Код для слайдера maplotlib:
def cube_show_slider(cube, axis=2, **kwargs):
"""
Display a 3d ndarray with a slider to move along the third dimension.
Extra keyword arguments are passed to imshow
"""
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider, Button, RadioButtons
# check dim
if not cube.ndim == 3:
raise ValueError("cube should be an ndarray with ndim == 3")
# generate figure
fig = plt.figure()
ax = plt.subplot(111)
fig.subplots_adjust(left=0.25, bottom=0.25)
# select first image
s = [slice(0, 1) if i == axis else slice(None) for i in xrange(3)]
im = cube[s].squeeze()
# display image
l = ax.imshow(im, **kwargs)
# define slider
axcolor = 'lightgoldenrodyellow'
ax = fig.add_axes([0.25, 0.1, 0.65, 0.03], axisbg=axcolor)
slider = Slider(ax, 'Axis %i index' % axis, 0, cube.shape[axis] - 1,
valinit=0, valfmt='%i')
def update(val):
ind = int(slider.val)
s = [slice(ind, ind + 1) if i == axis else slice(None)
for i in xrange(3)]
im = cube[s].squeeze()
l.set_data(im, **kwargs)
fig.canvas.draw()
slider.on_changed(update)
plt.show()