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!