Ich versuche, mit matplotlib.pyplot.imshow () ein Graustufenbild anzuzeigen . Mein Problem ist, dass das Graustufenbild als Farbkarte angezeigt wird. Ich brauche die Graustufen, weil ich mit Farbe über das Bild zeichnen möchte.
Ich lese das Bild ein und konvertiere es mit PILs Image.open () in Graustufen. Convert ("L")
image = Image.open(file).convert("L")
Dann konvertiere ich das Bild in eine Matrix, damit ich leicht eine Bildverarbeitung mit durchführen kann
matrix = scipy.misc.fromimage(image, 0)
Wenn ich es jedoch tue
figure()
matplotlib.pyplot.imshow(matrix)
show()
Es zeigt das Bild mit einer Farbkarte an (dh es ist keine Graustufe).
Was mache ich hier falsch?
python
matplotlib
grayscale
Ryan
quelle
quelle
_r
."plt.imshow(im_gray,cmap='gray', vmin = 0, vmax = 255)
Versuchen Sie, eine Graustufen-Farbkarte zu verwenden?
ZB so etwas wie
Eine Liste der Farbkarten finden Sie unter http://scipy-cookbook.readthedocs.org/items/Matplotlib_Show_colormaps.html
quelle
import matplotlib.pyplot as plt
Sie können Ihren Code auch einmal ausführen
Dadurch werden die Bilder standardmäßig in Graustufen angezeigt
quelle
gray()
odergrey()
?gray
... Grau ist amerikanische Standardschreibweise und Grau ist britische Rechtschreibung für dieselbe Farbe.Ich würde die Methode get_cmap verwenden. Ex.:
quelle
Die Antwort von @ unutbu kommt der richtigen Antwort ziemlich nahe.
Standardmäßig versucht plt.imshow (), Ihre (MxN) Array-Daten auf 0,0 ~ 1,0 zu skalieren. Und dann auf 0 ~ 255 abbilden. Für die meisten natürlich aufgenommenen Bilder ist dies in Ordnung, Sie werden keinen anderen sehen. Wenn Sie jedoch einen engen Bereich von Pixelwertbildern haben, sagen wir, das minimale Pixel ist 156 und das maximale Pixel ist 234. Das graue Bild sieht völlig falsch aus. Der richtige Weg, um ein Bild in Grau anzuzeigen, ist
Sehen wir uns ein Beispiel an:
Dies ist das ursprüngliche Bild: Original
Hierbei wird die Standardeinstellung "Norm" verwendet. Dies ist "Keine: falsches Bild"
Dies verwendet die NoNorm-Einstellung NoNorm (): rechtes Bild
quelle
Versuche dies:
quelle
pylab.grey()
, vielleicht wurde es entfernt?Verwenden Sie keine Interpolation und setzen Sie auf grau.
quelle