2016-07-09 6 views
0

Ich habe einen Satz von 1000 Graustufenbildern (28x28), ich möchte sie in 4D numpy array (Anzahl der Bilder, 1 , img_dim1, img_dim2). Das Folgende ist mein Code, aber es funktioniert nicht richtig. Irgendeine Idee, wie ich das Problem im Code beheben kann?Lesen von Bildern in 4D Numpy Array mit Dimension (num_img, channel, dim1, dim2)

from PIL import Image 
import numpy as np 
import os 

mypath=os.path.dirname('path/to/directory/') 
def load_dataset() : 
    data =np.zeros((1000,1,28,28), dtype=np.float64) 
    for fname in os.listdir(mypath): 
     pathname = os.path.join(mypath, fname) 
     img = Image.open(pathname) 
     data = np.dstack((data, img)) 
    return data 
data=load_dataset() 
print(data.shape) 
+0

Was ist es, das ist nicht wahr? Bitte teilen Sie uns das Problem mit oder welchen Fehler Sie bekommen. – Praveen

+2

Warum die zusätzliche Dimension? Sie könnten Ihre Pfade "aufzählen" und in "data [i] = img" einfügen, da die Daten bereits vorbelegt sind. Mit dstack werden Sie im Grunde gebeten, 'omg' an das Ende von' data' anzuhängen, das bereits in der richtigen Größe zugewiesen ist, anstatt einzufügen. Nicht klar bei der Verwendung von 'return' außerhalb einer Funktion. – Benjamin

Antwort

-1

Das Problem durch die Verwendung append und das Hinzufügen einer neuen Achse np.newaxis Arbeits gelöst wurde

from PIL import Image 
import numpy as np 
import os 

mypath=os.path.dirname('path/to/directory/') 
def load_dataset() : 
    data =[] 
    for fname in os.listdir(mypath): 
     pathname = os.path.join(mypath, fname) 
     img = Image.open(pathname) 
     img1 = img[np.newaxis,:,:] 
     data.append(img1) 
    return data 

data= load_dataset() 
data_x=np.array(data) 
print data_x.shape 
+0

Wie hat das dein Problem behoben? Ich habe "JpegImageFile" -Objekt ist nicht in der Zeile "imsubscriptable" img = Image.open (Pfadname) ' – sparrow

Verwandte Themen