Maison  >  Article  >  développement back-end  >  Pourquoi mon image en niveaux de gris apparaît-elle en couleur lors de l'utilisation de imshow() de Matplotlib ?

Pourquoi mon image en niveaux de gris apparaît-elle en couleur lors de l'utilisation de imshow() de Matplotlib ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-28 06:18:29180parcourir

Why Does My Grayscale Image Appear in Color When Using Matplotlib's imshow()?

Résolution des problèmes d'affichage pour l'image en niveaux de gris dans Matplotlib

En essayant d'afficher une image en niveaux de gris à l'aide de imshow() de Matplotlib, vous avez rencontré un situation où l'image apparaît à la place sous forme de palette de couleurs. Cela peut être frustrant lorsque votre objectif est de dessiner au-dessus de l'image avec de la couleur.

La solution

L'écart survient parce que la fonction imshow() attribue une palette de couleurs à l'image par défaut. Pour corriger cela, spécifiez explicitement l'argument cmap et définissez-le sur « gray » ou « gray_r » pour afficher respectivement les niveaux de gris ou les niveaux de gris inversés :

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

# Open and convert the image to grayscale
fname = 'image.png'
image = Image.open(fname).convert("L")

# Convert the image to a matrix
arr = np.asarray(image)

# Display the grayscale image
plt.imshow(arr, cmap='gray', vmin=0, vmax=255) # Use 'gray_r' for inverse grayscale
plt.show()</code>

Comme le montre ce code modifié, la spécification de la palette de couleurs garantit que le l'image est rendue correctement en niveaux de gris. Vous pouvez maintenant poursuivre votre tâche prévue consistant à dessiner sur l'image avec de la couleur.

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