Conversion d'une image RVB en niveaux de gris en Python
Vous essayez de convertir une image RVB en niveaux de gris à l'aide de la bibliothèque matplotlib de Python. Bien que la bibliothèque offre une fonctionnalité de lecture, la conversion des niveaux de gris n'est pas explicitement incluse.
Recherche de fonction intégrée
Vous avez à juste titre remis en question l'absence d'une fonction de conversion native en niveaux de gris. dans NumPy ou matplotlib. En effet, une telle transformation est une opération fondamentale en traitement d'image.
Options de résolution
Malgré l'absence de fonction intégrée, il existe plusieurs approches recommandées :
Bibliothèque d'oreillers :
Pillow, une bibliothèque de manipulation d'images, propose un outil simple et solution efficace :
from PIL import Image img = Image.open('image.png').convert('L') img.save('greyscale.png')
Implémentation de la formule Matplotlib :
Matplotlib vous permet d'implémenter vous-même la formule de conversion en niveaux de gris :
import numpy as np import matplotlib.pyplot as plt import matplotlib.image as mpimg def rgb2gray(rgb): return np.dot(rgb[...,:3], [0.2989, 0.5870, 0.1140]) img = mpimg.imread('image.png') gray = rgb2gray(img) plt.imshow(gray, cmap=plt.get_cmap('gray'), vmin=0, vmax=1) plt.show()
Fonction personnalisée :
Vous pouvez également créer votre propre fonction pour effectuer la conversion, comme indiqué dans votre code d'origine. Bien que ce ne soit peut-être pas le plus efficace, il constitue une solution réalisable.
Préservation du canal alpha
Si votre image d'entrée inclut un canal alpha (transparence), Pillow permet vous de le préserver en utilisant le mode 'LA' :
img = Image.open('image.png').convert('LA')
Ces approches offrent flexibilité et efficacité en fonction de vos besoins spécifiques.
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!