Maison > développement back-end > Tutoriel Python > Pourquoi les images chargées par OpenCV affichent-elles des couleurs inexactes dans Matplotlib ?

Pourquoi les images chargées par OpenCV affichent-elles des couleurs inexactes dans Matplotlib ?

Mary-Kate Olsen
Libérer: 2024-10-24 18:44:49
original
838 Les gens l'ont consulté

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

Différence de couleur OpenCV : résoudre la disparité entre les images chargées et tracées

Lorsque vous utilisez OpenCV pour charger des images couleur et les afficher à l'aide de Matplotlib, ce n'est pas le cas. Il est rare de rencontrer des écarts dans les couleurs affichées. Cela est dû à la différence dans les ordres de couleurs par défaut entre OpenCV et Matplotlib.

OpenCV stocke les images au format Bleu-Vert-Rouge (BGR), tandis que Matplotlib attend les images au format Rouge-Vert-Bleu (RVB). format. Lors de l'affichage d'une image chargée avec OpenCV dans Matplotlib, les canaux de couleur sont inversés, ce qui entraîne des couleurs incorrectes.

Solution : Conversion de BGR en RVB

Pour corriger ce problème, nous devons convertir explicitement l'image chargée de BGR en RVB à l'aide de la fonction cvtColor d'OpenCV.

<code class="python">RGB_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)</code>
Copier après la connexion

En utilisant RGB_img dans le tracé Matplotlib au lieu de l'img d'origine, nous nous assurons que l'ordre des couleurs correspond aux attentes de Matplotlib , et les couleurs s'affichent correctement.

Code mis à jour

<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>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal