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>
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>
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!