Heim >Backend-Entwicklung >Python-Tutorial >Warum zeigen OpenCV-geladene Bilder in Matplotlib ungenaue Farben an?
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!