HOWTO · Matplotlib
Wie man ein Bild in Matplotlib in Graustufen anzeigt
In diesem Artikel erfahren wir, wie Sie mit Matplotlib ein Graustufenbild anzeigen können. Um ein Graustufenbild mit der Matplotlib anzuzeigen, verwenden wir die matplotlib.pyplot.imshow() mit den Parametern cmap auf Grau, vmin auf 0 und vmax auf 255, wobei der Wert von cmap,vmin und vmax standardmäßig auf Keine gesetzt ist.
Auf dieser Seite
Um ein Graustufenbild mit Hilfe der Matplotlib anzuzeigen, benutzen wir die matplotlib.pyplot.imshow() mit den Parametern cmap auf 'gray', vmin auf 0 und vmax auf 255. Standardmäßig ist der Wert von cmap, vmin und vmax auf None gesetzt.
matplotlib.pyplot.imshow() zur Anzeige eines Bildes in Graustufen in der Matplotlib
matplotlib.pyplot.imshow(X,
cmap=None,
norm=None,
aspect=None,
interpolation=None,
alpha=None,
vmin=None,
vmax=None,
origin=None,
extent=None,
shape= < deprecated parameter > ,
filternorm=1,
filterrad=4.0,
imlim= < deprecated parameter > ,
resample=None,
url=None,
*,
data=None,
**kwargs)
Beispiele: Matplotlib Bild in Graustufen anzeigen
import matplotlib.pyplot as plt
import matplotlib.image as img
image = img.imread("lena.jpg")
plt.imshow(image[:, :, 1], cmap="gray", vmin=0, vmax=255, interpolation="none")
plt.show()
Ausgabe:
Diese Methode liest das Bild lena.jpg, das ein RGB-Bild ist, mit Hilfe der Funktion imread() aus dem Modul matplotlib.image. Um das Bild als Graustufenbild darzustellen, benötigen wir nur einen Farbkanal. Für den nächsten Schritt nehmen Sie also nur einen einzigen Farbkanal und zeigen das Bild mit der Methode plt.imshow() an, wobei cmap auf 'gray', vmin auf 0 und vmax auf 255 gesetzt wird.
Schließlich verwenden wir die Methode show(), um ein Fenster zu zeigen, das das Bild in Graustufen anzeigt. Um das obige Skript auszuführen, müssen wir lena.jpg in unserem aktuellen Arbeitsverzeichnis haben.
Die Verwendung nur eines Farbkanals ist keine geeignete Methode zur Konvertierung von RGB-Bildern in Graustufenbilder, da wir spezielle Algorithmen haben, um die Konvertierung effizienter zu gestalten. Diese Algorithmen sind in fast allen gängigen Bildverarbeitungsbibliotheken implementiert. Unten zeigen wir ein Beispiel anhand der PIL.
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
image = Image.open("lena.jpg")
gray_image = image.convert("L")
gray_image_array = np.asarray(gray_image)
plt.imshow(gray_image_array, cmap="gray", vmin=0, vmax=255)
plt.show()
Ausgabe:
Hier lesen wir das Bild lena.jpg in unserem aktuellen Arbeitsverzeichnis mit der Funktion open() und konvertieren das Bild dann mit der Methode convert() in Graustufen mit 'L' als Argument. Danach konvertieren wir das Graustufenbild in ein NumPy-Array und zeigen das Bild mit der imshow()-Methode an.
Ein zweidimensionales Array in Matplotlib in Graustufen anzeigen
Die obigen Beispiele lesen eine Bilddatei von der Festplatte. imshow() funktioniert genauso mit einem zweidimensionalen Array, das das Programm selbst erstellt: Erstellen Sie das Array mit NumPy und übergeben Sie es dann an imshow() mit cmap auf "gray" gesetzt, und setzen Sie vmin und vmax auf die eigenen Minimal- und Maximalwerte des Arrays, damit der gesamte Datenbereich von Schwarz bis Weiß abgebildet wird.
import numpy as np
import matplotlib.pyplot as plt
# Build a two-dimensional array of grayscale values in code
x = np.linspace(0, 255, 16)
y = np.linspace(0, 255, 12)
data = (x[np.newaxis, :] + y[:, np.newaxis]) / 2
plt.imshow(data, cmap="gray", vmin=data.min(), vmax=data.max())
plt.colorbar(label="Pixel value")
plt.title("Two-dimensional array displayed in grayscale")
plt.show()
Ausgabe:
Das Array enthält Werte von 0 bis 255, sodass die dunkelste Zelle schwarz, die hellste weiß und jeder Wert dazwischen als proportionaler Grauton dargestellt wird.