Die Lösung für den Fehler bei der Verwendung der imshow-Funktion von matplotlib zur Anzeige von Farbbildern (RGB-Daten)

Wann erhalte ich den Fehler: "Eingabedaten auf den gültigen Bereich für imshow mit RGB-Daten beschneiden ([0..1] für Floats oder [0..255] für Ganzzahlen)"?

Verwenden Sie in Python die Funktion von matplotlib: plt.imshow(ndarray), wenn Sie das Eingabearray als Farbbild (RGB) anzeigen.

Außerdem erscheint die Fehlermeldung nur bei der Verarbeitung von Farbbildern und wird als leeres Bild angezeigt, bei der Verarbeitung von Graustufenbildern läuft die Funktion normal und zeigt das Bild an.

Grund

plt.imshow() Funktionseinstellungen:

  • Bei zweidimensionalen Arrays (Graustufenbildern) normalisiert die Funktion die Eingabedaten automatisch auf [0,1] und zeigt sie an.
  • Bei dreidimensionalen Arrays (Farbbildern) normalisiert die plt.imshow()-Funktion die Eingabedaten nicht automatisch, sondern erfordert den Datenwertebereich: Wenn es sich um Float-Daten handelt, sollte der Wertebereich in [0, 1] liegen. ; Wenn es sich um int-Daten handelt, sollte der Wertebereich [0,255] sein.

Die Situation, die ich habe, ist, dass im vorherigen Datenverarbeitungsschritt einige Matrixoperationen vorhanden sind und der Datentyp Float64 wird. Bei der Eingabe eines 2D-Arrays (dargestellt als Graustufenbild) wird dies nicht beeinflusst, da die Funktion normalisiert wird. Bei der Eingabe eines dreidimensionalen Arrays (Anzeige als Farbbild) muss dieses in den entsprechenden Datentyp und Wertebereich konvertiert werden, bevor es normal in der Funktion plt.imshow() angezeigt werden kann.

Lösung

Methode eins:

plt.imshow(ndarray.astype(‘uint8’))
将 float 型数据截短转换成 uint8 型数据。


Methode zwei:

plt.imshow(ndarray/255)

#将数据缩放到[0,1]。

Ich denke du magst

Origin blog.csdn.net/qq_39237205/article/details/124201647
Empfohlen
Rangfolge