web-dev-qa-db-fra.com

Comment charger plusieurs images dans un tableau numpy?

Comment charger des pixels de plusieurs images dans un répertoire d'un tableau numpy. J'ai chargé une seule image dans un tableau numpy. Mais ne peut pas comprendre comment charger plusieurs images à partir d'un répertoire. Voici ce que j'ai fait jusqu'à présent 

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

Cela charge un 32 * 32 matrices. Je veux charger 100 des images dans un tableau numpy. Je veux faire 100 * 32 * 32 tableau numpy taille. Comment puis je faire ça ? Je sais que la structure ressemblerait à quelque chose comme ça 

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

Mais ne peut pas savoir comment charger les images dans numpy array 

10
Codehead

Obtenir une liste de fichiers BMP

Pour obtenir la liste des fichiers BMP du répertoire BengaliBMPConvert, utilisez:

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

Par contre, si vous connaissez déjà les noms de fichiers, il suffit de les placer dans un ordre:

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

Combinaison de toutes les images dans un tableau numpy

Pour combiner toutes les images dans un tableau:

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

Décaper un tableau numpy

Pour enregistrer un tableau numpy dans un fichier à l’aide de pickle:

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

x est le tableau numpy à sauvegarder, filehandle est le descripteur du fichier pickle, tel que open('filename.p', 'wb'), et protocol=2 indique à pickle d'utiliser son format actuel plutôt qu'un format ancien obsolète.

Vous pouvez également utiliser des méthodes fournies par numpy (astuce: tegan ). Pour vider le tableau x dans le fichier file.npy, utilisez:

x.dump('file.npy')

Pour charger le tableau x dans le fichier:

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

Pour plus d'informations, voir les numpy docs pour dump et load .

18
John1024

Utilisez la fonction imread () de OpenCV avec os.listdir () , comme

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]))

classe 'numpy.ndarray'

Cela vous renvoie une liste (== instances) dans laquelle toutes les valeurs d'échelle de gris des images sont stockées. Pour les images couleur, définissez simplement .format(filepath),1.

0
2Obe