web-dev-qa-db-ger.com

Wie lade ich mehrere Bilder in einem numpy Array?

So laden Sie Pixel mehrerer Bilder in ein Verzeichnis in einem numpy-Array. Ich habe ein einzelnes Bild in ein numpy-Array geladen. Kann aber nicht herausfinden, wie man mehrere Bilder aus einem Verzeichnis lädt. Hier was ich bisher gemacht habe 

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

Dies lädt 32 * 32-Matrizen. Ich möchte 100 der Bilder in einem numpy-Array laden. Ich möchte ein Numpy-Array mit 100 * 32 * 32-Größen erstellen. Wie kann ich das machen ? Ich weiß, dass die Struktur so aussehen würde 

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

Kann aber nicht herausfinden, wie man die Bilder in numpy array lädt 

10
Codehead

Abrufen einer Liste von BMP -Dateien

Um eine Liste von BMP -Dateien aus dem Verzeichnis BengaliBMPConvert zu erhalten, verwenden Sie:

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

Wenn Sie die Dateinamen jedoch bereits kennen, setzen Sie sie einfach in eine Reihenfolge:

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

Alle Bilder in einem numpy-Array zusammenfassen

So kombinieren Sie alle Bilder in einem Array:

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

Beizen eines numpy-Arrays

So speichern Sie ein numpy-Array mit Pickle in einer Datei:

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

dabei ist x das zu speichernde numpy-Array, filehandle das Handle für die Pickle-Datei, wie open('filename.p', 'wb'), und protocol=2 weist pickle an, das aktuelle Format anstelle eines alten veralteten Formats zu verwenden.

Alternativ können numpy-Arrays mit den von numpy bereitgestellten Methoden (Hutspitze: tegan ) gebeizt werden. Um das Array x in der Datei file.npy zu sichern, verwenden Sie:

x.dump('file.npy')

So laden Sie das Array x wieder aus der Datei:

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

Weitere Informationen finden Sie in den numpy-Dokumenten für dump und load .

18
John1024

Verwenden Sie die Funktion imread () von OpenCV zusammen mit os.listdir () , wie

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

klasse 'numpy.ndarray'

Daraufhin erhalten Sie eine Liste (== instances), in der alle Graustufenwerte der Bilder gespeichert sind. Für Farbbilder setzen Sie einfach .format(filepath),1.

0
2Obe