Wie konvertieren von RGB-PIL Bild zu numpy-array mit 3 Kanälen?
Ich bin laden-image mit dem folgenden code
image = PIL.Image.open(file_path)
image = np.array(image)
Funktioniert es, aber die Größe des Arrays zu sein scheint (X, X, 4)
ist, d.h. Sie hat 4 Ebenen. Ich würde wie normale RGB-Schichten. Ist es möglich?
UPDATE
Fand ich, dass nur das entfernen der 4. Kanal ist unsufficcient. Der folgende code notwendig:
image = PIL.Image.open(file_path)
image.thumbnail(resample_size)
image = image.convert("RGB")
image = np.asarray(image, dtype=np.float32) / 255
image = image[:, :, :3]
Warum?
Einfach clip auf drei Kanälen :
Die vierte Schicht ist das alpha (D. H. Transparenz) Kanal. Sind Sie sicher, dass Sie das nicht wollen?
Ich lese JPEGs, soweit ich weiß, enthalten Sie keine alpha.
Wenn ich
image[...,:3]
.Die vierte Schicht ist das alpha (D. H. Transparenz) Kanal. Sind Sie sicher, dass Sie das nicht wollen?
Ich lese JPEGs, soweit ich weiß, enthalten Sie keine alpha.
Wenn ich
np.asarray(my_pil_img).shape
es gibt (480, 640, 3)
auf 480x640 .png-Bild ohne alpha. Ist das etwas, das wurde "behoben" werden in einer späteren version, da diese post?InformationsquelleAutor Dims | 2017-07-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die vierte Schicht ist die Transparenz für Bildformate, die Transparenz unterstützt, z.B. PNG. Wenn Sie entfernen Sie die 4. Wert es wird eine korrekte RGB-Bild ohne Transparenz.
EDIT:
Beispiel:
(64, 64, 4)
zu(22, 64, 4)
Feste der edit Dank @Divakar das richtige Beispiel.
InformationsquelleAutor keredson