Как загрузить несколько изображений в массив NumPy?

Как загрузить пиксели нескольких изображений в каталог в массиве numpy . Я загрузил одно изображение в массив NumPy . Но не могу понять, как загрузить несколько изображений из каталога . Вот что я сделал до сих пор

image = Image.open('bn4.bmp')
nparray=np.array(image)

это загружает матрицы 32*32 . Я хочу загрузить 100 изображений в массив numpy . Я хочу сделать 100*32*32 размер массива numpy . Как я могу это сделать ? Я знаю, что структура будет выглядеть примерно так

for filename in listdir("BengaliBMPConvert"):
  if filename.endswith(".bmp"):
       -----------------
  else:
       continue

но может не узнайте, как загрузить изображения в массив numpy

1 ответов


получение списка файлов BMP

чтобы получить список BMP-файлов из каталога BengaliBMPConvert использовать:

import glob
filelist = glob.glob('BengaliBMPConvert/*.bmp')

С другой стороны, если вы уже знаете имена файлов, просто положите их в последовательности:

filelist = 'file1.bmp', 'file2.bmp', 'file3.bmp'

объединение всех изображений в один массив numpy

чтобы объединить все изображения в один массив:

x = np.array([np.array(Image.open(fname)) for fname in filelist])

маринование массива numpy

чтобы сохранить массив numpy в файл, используя рассол:

import pickle
pickle.dump( x, filehandle, protocol=2 )

здесь x массив numpy для сохранения,filehandle является дескриптором для файла рассола, например open('filename.p', 'wb') и protocol=2 говорит рассол использовать свой текущий формат, а не какой-то древний устаревший формат.

кроме того, массивы numpy можно мариновать с помощью методов, поставляемых numpy (hat tip:Тиган). Дамп массива x в файле file.npy использовать:

x.dump('file.npy')

для загрузки массива x вернуться из файл:

x = np.load('file.npy')

для получения дополнительной информации см. документы numpy для dump и загрузить.