2017-10-25 2 views
1

Ich versuche ein 2d-numpy-Array mit Graustufenwerten aus dem RGBA-Bild zu erhalten. Die Methode, die ich verwende, ist imread von spicy.misc, aber immer wenn ich mode='F' oder flatten=True setze, ist das Ergebnis eine Nullmatrix.scipy.misc imread gibt ein 2d-Array von Nullen zurück, wenn RGBA-Bild mit flatten = True gelesen wird

Mein Code:

img_mat = misc.imread(f, mode='F') 

auch versucht

img_mat = misc.imread(f, flatten=True) 

Ausgang:

(278, 278) 
[[ 0. 0. 0. ..., 0. 0. 0.] 
[ 0. 0. 0. ..., 0. 0. 0.] 
[ 0. 0. 0. ..., 0. 0. 0.] 
..., 
[ 0. 0. 0. ..., 0. 0. 0.] 
[ 0. 0. 0. ..., 0. 0. 0.] 
[ 0. 0. 0. ..., 0. 0. 0.]] 

Und das Bild: letter A

Antwort

0

Ihr Bild ist "reine alpha"! Die RGB-Komponenten des Bildes sind alle 0; Nur der Alpha-Kanal hat Werte ungleich Null. Wenn die zu Grunde liegende Bildbibliothek (PIL oder Pillow) ein RGBA-Bild in den Modus "F" umwandelt, ignoriert es offenbar den Alphakanal, sodass Sie ein Array mit Nullen erhalten.

Anstatt das Bild der Abflachung, wenn Sie es lesen, können Sie die RGBA-Daten lesen und dann den Alpha-Kanal als abgeflachte Bild verwenden:

img_data = imread(f)   # Read the RGBA image 
img_mat = img_data[:, :, 3] # Extract the alpha channel 
+0

Danke, das eine Stunde später gefunden. Wird verwendet, um ein 3-dimensionales Array als Eingabe für die Conv2d-Ebene in Keras zu erhalten image_mat = misc.imread (f) image_mat = image_mat [:,:, 3:]/[1.0] ' –

Verwandte Themen