Как преобразовать .npy (numpy) файл в .png файл, где .npy форма массива (30,256,256)?

#python #numpy #matplotlib #scipy #numpy-ndarray

#python #numpy #matplotlib #scipy #numpy-ndarray

Вопрос:

Я хочу преобразовать .npy файл в .png файл

 from scipy.misc import toimage, imsave
img_array = np.load('MRNet-v1.0/train/sagittal/0003.npy')
print(img_array.shape)
name = "img" str(i) ".png"
imsave(name,img_array)
  

форма : (30,256,256)

Но появляется ошибка, подобная

Ошибка значения: ‘arr’ не имеет подходящей формы массива ни для одного режима.

Комментарии:

1. Эти данные не являются данными изображения (или, по крайней мере, это не одно изображение). Если это данные нескольких изображений, сначала разделите данные на несколько массивов и сохраните изображения одно за другим.

2. Возможно, ваш массив представляет 30 фрагментов изображения размером 256×256 пикселей. В этом случае вам нужно либо сохранить его в виде 30 отдельных изображений, либо сохранить их в формате, таком как TIFF, который позволяет использовать несколько изображений в одном файле.

3. Или десять цветных изображений…

4. @MadPhysicist но они, вероятно, будут иметь форму [10,256,256,3] (или [3,256,256,10] ), нет?

Ответ №1:

Прежде всего, эти scipy инструменты для создания изображений устарели и будут удалены в будущем (начиная с версии scipy 1.2.0). Вместо этого установите, imageio а затем запустите:

 import imageio
for i in range(30):
    imsave("./slice_{0}.png".format(i), img_array[i,...])