Heim >Backend-Entwicklung >Python-Tutorial >Warum zeigen OpenCV-geladene Bilder in Matplotlib ungenaue Farben an?

Warum zeigen OpenCV-geladene Bilder in Matplotlib ungenaue Farben an?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-24 18:44:49735Durchsuche

Why Do OpenCV-Loaded Images Display Inaccurate Colors in Matplotlib?

OpenCV-Farbdiskrepanz: Behebung der Diskrepanz zwischen geladenen und geplotteten Bildern

Bei der Verwendung von OpenCV zum Laden von Farbbildern und deren Anzeige mit Matplotlib ist dies nicht der Fall Es kommt selten vor, dass es bei den angezeigten Farben zu Abweichungen kommt. Dies ist auf die unterschiedlichen Standardfarbreihenfolgen zwischen OpenCV und Matplotlib zurückzuführen.

OpenCV speichert Bilder im Blau-Grün-Rot-Format (BGR), während Matplotlib Bilder im Rot-Grün-Blau-Format (RGB) erwartet. Format. Beim Anzeigen eines mit OpenCV geladenen Bildes in Matplotlib werden die Farbkanäle umgekehrt, was zu falschen Farben führt.

Lösung: BGR in RGB konvertieren

Um dieses Problem zu beheben, Wir müssen das geladene Bild mithilfe der cvtColor-Funktion von OpenCV explizit von BGR in RGB konvertieren.

<code class="python">RGB_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)</code>

Durch die Verwendung von RGB_img im Matplotlib-Plot anstelle des ursprünglichen img stellen wir sicher, dass die Farbreihenfolge den Erwartungen von Matplotlib entspricht , und die Farben werden korrekt angezeigt.

Aktualisierter Code

<code class="python">import cv2
import matplotlib.pyplot as plt

# Load image with BGR order (default for OpenCV)
img = cv2.imread('lena_caption.png', cv2.IMREAD_COLOR)

# Convert BGR to RGB for compatibility with Matplotlib
RGB_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# Create grayscale image
bw_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# Create figure for plotting
fig, axes = plt.subplots(1, 2)

# Plot original image with corrected color order
axes[0].imshow(RGB_img)
axes[0].set_title('Original Image (RGB)')
axes[0].set_xticks([]); axes[0].set_yticks([])

# Plot grayscale image
axes[1].imshow(bw_img, cmap='gray')
axes[1].set_title('BW Image')
axes[1].set_xticks([]); axes[1].set_yticks([])

plt.show()</code>

Das obige ist der detaillierte Inhalt vonWarum zeigen OpenCV-geladene Bilder in Matplotlib ungenaue Farben an?. 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