2016-04-27 11 views
0

Ich versuche, einen Ordner mit Bildern in ein numpy Array zu analysieren. Ich möchte ein Array erhalten, die wie folgt aussieht:Parse Ordner mit Bildern in (m, n) geformt numpy Array

import numpy as np 
from sklearn.datasets import fetch_mldata 

#load 70,000 MNIST images (28 X 28 pixels) 
mnist = fetch_mldata("MNIST original") 
X = mnist.data 

print X.shape 

gewünschte Ausgabe:

(70000L, 784L) 

Das ist, was ich versucht:

from PIL import Image                
import numpy                  
import matplotlib.pyplot as plt             
import glob 

#I have two colour images, each 64 X 64 pixels, in the folder 
imageFolderPath = 'C:\\Users\\apples\\Desktop\\t-sne\\pics' 
imagePath = glob.glob(imageFolderPath+'/*.JPEG') 

im_array = numpy.array([numpy.array(Image.open(imagePath[i])) for i in range(len(imagePath))]) 

print im_array.shape 

Aber es erzeugt die folgende Ausgabe:

(2L, 64L, 64L, 3L) 

Wie kann ich ein Array mit den folgenden Abmessungen:

(m, n) 

Antwort

2

PIL Last Farbbilder im RGB-Format (vielleicht nicht immer), daher die letzte Dimension ist Größe 3 (ein für jeden Farbkanal). Wahrscheinlich möchten Sie das Bild also in einen anderen pixel format konvertieren. Außerdem müssen Sie die Bild-Arrays reduzieren, um zu dem gewünschten Layout zu gelangen. Sie könnten etwas tun wie:

def img2array(path): 
    img = Image.open(path).convert('F') 
    return numpy.array(img).ravel() 

im_array = numpy.array([img2array(path) for path in imagePath]) 
+0

Vielen Dank, das hat funktioniert wie ein Charme! Kann ich fragen, in welcher Reihenfolge die Bilder im Ordner bearbeitet werden? Ich muss ein anderes Array mit Beschriftungen erstellen, die jedem Bild entsprechen, z. '(0,1 ... n)', deshalb muss ich sicherstellen, dass die Labels mit dem richtigen Bild übereinstimmen. –

+0

@ Äpfel-Orangen - 'glob.glob' verwendet' os.listdir', das Pfade in beliebiger Reihenfolge gibt. Natürlich können Sie es in einen Aufruf von 'sortierte' umbrechen, um die Bestellung zu reparieren. Oder Sie könnten die Dateinamen analysieren. –

+0

Okay, danke! –

Verwandte Themen