Heim  >  Artikel  >  Backend-Entwicklung  >  Warum erscheint mein Graustufenbild in Farbe, wenn ich imshow() von Matplotlib verwende?

Warum erscheint mein Graustufenbild in Farbe, wenn ich imshow() von Matplotlib verwende?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-28 06:18:29180Durchsuche

Why Does My Grayscale Image Appear in Color When Using Matplotlib's imshow()?

Beheben von Anzeigeproblemen für Graustufenbilder in Matplotlib

Beim Versuch, ein Graustufenbild mit Matplotlibs imshow() anzuzeigen, sind Sie auf ein Problem gestoßen Situation, in der das Bild stattdessen als Farbkarte angezeigt wird. Dies kann frustrierend sein, wenn Ihr Ziel darin besteht, mit Farbe über das Bild zu zeichnen.

Die Lösung

Die Diskrepanz entsteht, weil die Funktion imshow() eine Farbkarte zuweist standardmäßig zum Bild hinzugefügt. Um dies zu korrigieren, geben Sie explizit das Argument cmap an und setzen Sie es auf „gray“ oder „gray_r“, um Graustufen bzw. inverse Graustufen anzuzeigen:

<code class="python">import numpy as np
import matplotlib.pyplot as plt
from PIL import Image

# Open and convert the image to grayscale
fname = 'image.png'
image = Image.open(fname).convert("L")

# Convert the image to a matrix
arr = np.asarray(image)

# Display the grayscale image
plt.imshow(arr, cmap='gray', vmin=0, vmax=255) # Use 'gray_r' for inverse grayscale
plt.show()</code>

Wie dieser geänderte Code zeigt, stellt die Angabe der Farbkarte sicher, dass die Das Bild wird korrekt als Graustufen gerendert. Sie können nun mit der beabsichtigten Aufgabe fortfahren, mit Farbe über das Bild zu zeichnen.

Das obige ist der detaillierte Inhalt vonWarum erscheint mein Graustufenbild in Farbe, wenn ich imshow() von Matplotlib verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn