Heim >Backend-Entwicklung >Python-Tutorial >Wie konvertiert man PIL-Bilder effizient in NumPy-Arrays für Pixeltransformationen?
Konvertieren von PIL-Bildern in NumPy-Arrays für effiziente Pixeltransformationen
Bei der Arbeit mit Bildverarbeitungsaufgaben ist es oft wünschenswert, ein PIL ( Python Imaging Library)-Bild in ein NumPy-Array für schnellere pixelweise Transformationen. Diese Konvertierung ermöglicht eine effiziente Bearbeitung von Bilddaten und ermöglicht so komplexere und zeitoptimierte Bildoperationen.
Um ein PIL-Bild in ein NumPy-Array zu konvertieren, kann man den folgenden Codeausschnitt verwenden:
pic = Image.open("foo.jpg") pix = numpy.array(pic.getdata()).reshape(pic.size[0], pic.size[1], 3)
Dieser Code liest die Bilddaten aus dem PIL-Bild und formt sie in ein dreidimensionales NumPy-Array um, wobei jede Dimension die Höhe, Breite und den Kanal des Bildes (z. B. RGB) darstellt.
Zum Konvertieren Um das NumPy-Array nach der Durchführung der gewünschten Transformationen wieder in ein PIL-Bild umzuwandeln, kann der folgende Code verwendet werden:
new_pic = Image.fromarray(modified_pix)
Diese Methode ermöglicht jedoch keine direkte Änderung des ursprünglichen PIL-Bildes mithilfe des modifizierten NumPy-Arrays .
Vor PIL-Version 1.1.6 erforderte die Änderung des ursprünglichen PIL-Bildes die Konvertierung des NumPy-Arrays in eine Liste von Tupeln:
data = list(tuple(pixel) for pixel in modified_pix) pic.putdata(data)
Dieser Ansatz kann jedoch langsam und ineffizient sein.
In PIL-Version 1.1.6 und höher ist die bevorzugte Methode zum Konvertieren zwischen PIL-Bildern und NumPy-Arrays:
pix = numpy.array(pic)
Dieser Befehl erzeugt ein dreidimensionales NumPy-Array mit Zeilen und Spalten und RGB-Kanäle als Abmessungen.
Nach der Durchführung der Pixeltransformationen kann das aktualisierte Array wie folgt wieder in ein PIL-Bild konvertiert werden:
new_pic = Image.fromarray(modified_pix)
Alternativ kann man das ursprüngliche PIL ändern Bild mit dem modifizierten NumPy-Array mit:
pic.putdata(modified_pix)
Das obige ist der detaillierte Inhalt vonWie konvertiert man PIL-Bilder effizient in NumPy-Arrays für Pixeltransformationen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!