Maison >développement back-end >Tutoriel Python >Comment puis-je convertir une image RVB en niveaux de gris en Python ?

Comment puis-je convertir une image RVB en niveaux de gris en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-30 13:06:12855parcourir

How Can I Convert an RGB Image to Grayscale in Python?

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!

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