Maison  >  Article  >  développement back-end  >  Pourquoi mon image en niveaux de gris apparaît-elle avec une palette de couleurs lors de l'utilisation de Matplotlib ?

Pourquoi mon image en niveaux de gris apparaît-elle avec une palette de couleurs lors de l'utilisation de Matplotlib ?

DDD
DDDoriginal
2024-10-27 10:11:03993parcourir

Why Does My Grayscale Image Appear With a Colormap When Using Matplotlib?

Affichage des images en niveaux de gris avec Matplotlib

Lorsque vous travaillez avec des images à l'aide de matplotlib.pyplot.imshow(), les convertir en niveaux de gris est essentiel pour superposer des éléments avec de la couleur. Pour faciliter cette conversion, la fonction Image.open().convert("L") de PIL est couramment utilisée.

Problème

Malgré l'utilisation de PIL pour convertir une image en en niveaux de gris, son affichage avec matplotlib.pyplot.imshow() entraîne l'apparition de l'image avec une palette de couleurs au lieu de véritables niveaux de gris.

Solution

Pour résoudre ce problème, il est crucial de spécifier l'argument colormap lors de l'appel de matplotlib.pyplot.imshow(). Par défaut, matplotlib sélectionne une palette de couleurs qui peut introduire de la couleur dans l'image. Pour garantir une représentation en niveaux de gris, définissez cmap='gray' et définissez explicitement la plage de valeurs de gris en utilisant vmin=0 et vmax=255.

Exemple de code

Le code suivant L'extrait montre comment charger une image, la convertir en niveaux de gris et l'afficher :

<code class="python">import numpy as np
import matplotlib.pyplot as plt
from PIL import Image

fname = 'image.png'
image = Image.open(fname).convert("L")
arr = np.asarray(image)
plt.imshow(arr, cmap='gray', vmin=0, vmax=255)
plt.show()</code>

Alternativement, si vous préférez la représentation inverse en niveaux de gris, modifiez l'argument cmap en 'gray_r'.

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