NumPy-Array in PIL-Bild konvertieren in Python

Suraj Joshi 15 Februar 2024
  1. Konvertieren eines NumPy-Arrays in ein PIL-Bild in Python
  2. Konvertieren eines NumPy-Arrays in ein PIL-Bild in Python mit der Matplotlib Colormap
NumPy-Array in PIL-Bild konvertieren in Python

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:

Konvertieren eines NumPy-Arrays in ein PIL-Bild in Python

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:

Konvertieren eines selbst erstellten NumPy-Arrays in ein PIL-Image Python

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:

Konvertieren eines NumPy-Arrays in ein PIL-Image Python mit der Matplotlib Colormap

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 avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Verwandter Artikel - Matplotlib Images