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
Libérer: 2024-11-30 13:06:12
original
792 Les gens l'ont consulté

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')
Copier après la connexion

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()
Copier après la connexion

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')
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal