2017-04-24 4 views
0

Ich versuche, eine Reihe von Bildpixeldaten in ein numpy Array zu laden, aber Probleme mit herauszufinden, wie das dtype Feld zu füllen.Laden Sie Bilder in numpy Array

Meine Bilder sind 128 x 128 x 3 in der Größe mit Typ uint8 und werden wie folgt geladen:

import glob 
from scipy import misc 
images = np.fromiter((misc.imread(path) for path in glob.glob('images/*.png')), <dtype_field>) 

misc.imread lädt jedes Bild als numpy Array, aber die Frage, die ich bin vor einer Kurve fährt diese Liste der Bilder selbst in ein numpliges Array.

Versuchte auch die folgende, funktioniert aber nicht:

images = [misc.imread(path) for path in glob.glob('extra_signs/*.png')] 
images = np.asarray(images) 

Wo ich die folgende Fehlermeldung erhalten:

ValueError: could not broadcast input array from shape (128,128,3) into shape (128,128)

Einstellung dtype zu np.uint8 führt den folgenden Fehler:

ValueError: setting an array element with a sequence.

Hinweis: Ich habe gesucht Um stackoverflow habe ich Fragen dazu bekommen, wie man ein Bild in ein numpy Array liest, aber keines beim Lesen aller Bilder in ein Array.

+1

Es sieht so aus, als wäre eines Ihrer Bilder nicht 128x128x3. Sind Sie sicher, dass kein monochromes Bild mit der Form 128x128 in Ihren Dateien enthalten ist? –

+0

@WarrenWeckesser Ist 'monochromes Bild' nur ein schickes Wort für' Graustufen'? – kmario23

+0

@WarrenWeckesser Sie hatten fast recht. Es stellte sich heraus, dass ich ein Bild mit einer Tiefe von 4 Kanälen hatte. Nicht sicher, was dort schief gelaufen ist, aber ich habe es durch ein anderes ersetzt, das eine normale Tiefe von 3 hatte und es hat funktioniert. Danke Warren! –

Antwort

2

Überprüfen Sie die Größe aller Bilder, die Sie gerade lesen. Anscheinend ist mindestens einer von ihnen nicht 128x128x3.