Heim  >  Artikel  >  Backend-Entwicklung  >  Warum erscheint mein Graustufenbild mit einer Farbkarte, wenn ich Matplotlib verwende?

Warum erscheint mein Graustufenbild mit einer Farbkarte, wenn ich Matplotlib verwende?

DDD
DDDOriginal
2024-10-27 10:11:03993Durchsuche

Why Does My Grayscale Image Appear With a Colormap When Using Matplotlib?

Anzeigen von Bildern als Graustufen mit Matplotlib

Beim Arbeiten mit Bildern mithilfe von matplotlib.pyplot.imshow() ist die Konvertierung in Graustufen unerlässlich Elemente mit Farbe überlagern. Um diese Konvertierung zu erleichtern, wird häufig die PIL-Funktion Image.open().convert("L") verwendet.

Problem

Trotz der Verwendung von PIL zum Konvertieren eines Bildes Graustufen, die Anzeige mit matplotlib.pyplot.imshow() führt dazu, dass das Bild mit einer Farbkarte statt mit echten Graustufen angezeigt wird.

Lösung

Um dieses Problem zu beheben, verwenden Sie es Es ist wichtig, das Argument colormap anzugeben, wenn matplotlib.pyplot.imshow() aufgerufen wird. Standardmäßig wählt matplotlib eine Farbkarte aus, die dem Bild Farbe verleihen kann. Um die Graustufendarstellung sicherzustellen, legen Sie cmap='gray' fest und definieren Sie den Grauwertbereich explizit mit vmin=0 und vmax=255.

Beispielcode

Der folgende Code Das Snippet zeigt, wie man ein Bild lädt, es in Graustufen umwandelt und anzeigt:

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

fname = 'image.png'
image = Image.open(fname).convert("L")
arr = np.asarray(image)
plt.imshow(arr, cmap='gray', vmin=0, vmax=255)
plt.show()</code>

Wenn Sie alternativ die inverse Graustufendarstellung bevorzugen, ändern Sie das cmap-Argument in „gray_r“.

Das obige ist der detaillierte Inhalt vonWarum erscheint mein Graustufenbild mit einer Farbkarte, wenn ich 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