NumPy-Array in PIL-Bild konvertieren in Python
- Konvertieren eines NumPy-Arrays in ein PIL-Bild in Python
- Konvertieren eines NumPy-Arrays in ein PIL-Bild in Python mit der Matplotlib Colormap
Dieses Tutorial erklärt, wie wir ein NumPy-Array in ein PIL
-Bild umwandeln können, indem wir Image.fromarray()
aus dem PIL
-Paket verwenden. Die Python Imaging Library (PIL
) ist eine Bibliothek in Python mit verschiedenen Bildverarbeitungsfunktionen.
Die Funktion Image.fromarray()
nimmt das Array-Objekt als Eingabe und gibt das aus dem Array-Objekt erstellte Bildobjekt zurück.
Konvertieren eines NumPy-Arrays in ein PIL-Bild in Python
import numpy as np
from PIL import Image
image = Image.open("lena.png")
np_array = np.array(image)
pil_image = Image.fromarray(np_array)
pil_image.show()
Ausgabe:
Es wird das Bild lena.png
im aktuellen Arbeitsverzeichnis mit der Methode open()
aus dem Image
gelesen und ein Bildobjekt zurückgegeben.
Dieses Bild-Objekt wandeln wir dann mit der Methode numpy.array()
in ein NumPy-Array um.
Wir verwenden die Funktion Image.fromarray()
, um das Array zurück in das PIL
-Bildobjekt zu konvertieren und zeigen schließlich das Bildobjekt mit der Methode show()
an.
import numpy as np
from PIL import Image
array = np.random.randint(255, size=(400, 400), dtype=np.uint8)
image = Image.fromarray(array)
image.show()
Ausgabe:
Hier erstellen wir ein NumPy-Array der Größe 400x400
mit Zufallszahlen von 0
bis 255
und konvertieren dann das Array mit der Funktion Image.fromarray()
in ein Image
-Objekt und zeigen das image
mit der Methode show()
an.
Konvertieren eines NumPy-Arrays in ein PIL-Bild in Python mit der Matplotlib Colormap
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
from matplotlib import cm
image_array = plt.imread("lena.jpg")
image_array = image_array / 255
image = Image.fromarray(np.uint8(cm.plasma(image_array) * 255))
image.show()
Ausgabe:
Es wird die Colormap plasma
aus dem Paket Matplotlib
angewendet. Um eine Colormap auf ein Bild anzuwenden, normalisieren wir zunächst das Array mit einem Maximalwert von 1
. Der maximale Wert des Elements in image_array
ist im obigen Beispiel 255
. Also teilen wir das image_array
durch 255 für die Normalisierung.
Dann wenden wir die Farbzuordnung auf das image_array
an und multiplizieren es wieder mit 255
. Dann konvertieren wir die Elemente mit der Methode np.uint8()
in das int
-Format. Schließlich wandeln wir das Array mit der Funktion Image.fromarray()
in das Bild um.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn