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

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

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

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

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'

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

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

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

Мариновать массив

Чтобы сохранить массив numpy в файл с помощью pickle:

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

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

Кроме того, массивы NumPy можно травить, используя методы, предоставленные NumPY (шляпа наконечник: Tegan). Чтобы file.npy массив x в файл file.npy, используйте:

x.dump('file.npy')

Чтобы загрузить массив x обратно из файла:

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

Для получения дополнительной информации см. Документацию numpy для dump и load.

Ответ 2

Используйте функцию OpenCV imread() вместе с os.listdir(), например

import numpy as np
import cv2
import os

instances = []

# Load in the images
for filepath in os.listdir('images/'):
    instances.append(cv2.imread('images/{0}'.format(filepath),0))

print(type(instances[0]))

класс 'numpy.ndarray'

Это возвращает вам список (== instances), в котором хранятся все значения оттенков серого для изображений. Для цветных изображений просто установите .format(filepath),1.