Convertir l'image en niveaux de gris en Python
-
Convertir une image en niveaux de gris en Python en utilisant la méthode
image.convert()
de la bibliothèquepillow
-
Convertir une image en niveaux de gris en Python en utilisant la méthode
color.rgb2gray()
du modulescikit-image
-
Convertir une image en niveaux de gris en Python en utilisant la méthode
cv2.imread()
de la bibliothèqueOpenCV
-
Convertir une image en niveaux de gris en Python à l’aide de la formule de conversion et de la bibliothèque
Matplotlib
Ce tutoriel expliquera différentes méthodes pour convertir une image en niveaux de gris en Python. Une image en niveaux de gris est une image dans laquelle un seul pixel représente la quantité de lumière ou ne contient que des informations d’intensité lumineuse. Il s’agit d’une image unidimensionnelle et n’a que différentes nuances de gris.
Comme les images en niveaux de gris sont unidimensionnelles, elles sont utilisées pour réduire la complexité de la formation des modèles dans divers problèmes et dans des algorithmes comme la détection des contours de Canny.
Cet article examinera comment nous pouvons convertir une image en niveaux de gris ou lire une image en niveaux de gris en Python en utilisant diverses méthodes des modules de Python.
Convertir une image en niveaux de gris en Python en utilisant la méthode image.convert()
de la bibliothèque pillow
La méthode image.convert(mode, ..)
prend une image en entrée et la convertit dans le type d’image souhaité spécifié dans l’argument mode
. Le mode comprend des images en noir et blanc pixel 1 et 8 bits, des images RGB
, des images HSV
, des images BGR
et des images LAB
, etc.
Comme nous voulons convertir notre image en niveaux de gris, nous pouvons passer 1
comme argument de mode pour le mode noir et blanc 1 bit, L
pour l’image noir et blanc 8 bits et LA
pour le mode alpha. L’exemple de code ci-dessous montre comment utiliser la méthode image.convert()
de la bibliothèque pillow
pour convertir une image en niveaux de gris en Python:
from PIL import Image
img = Image.open("test.jpg")
imgGray = img.convert("L")
imgGray.save("test_gray.jpg")
Image originale:
Image en niveaux de gris convergents:
Convertir une image en niveaux de gris en Python en utilisant la méthode color.rgb2gray()
du module scikit-image
Le color.rgb2gray()
prend une image au format RGB en entrée et renvoie une copie en niveaux de gris de l’image d’entrée. L’exemple de code ci-dessous montre comment utiliser la méthode color.rgb2gray()
du module scikit-image
pour obtenir une image en niveaux de gris en Python.
from skimage import color
from skimage import io
img = io.imread("test.jpg")
imgGray = color.rgb2gray(img)
Convertir une image en niveaux de gris en Python en utilisant la méthode cv2.imread()
de la bibliothèque OpenCV
Une autre méthode pour obtenir une image en niveaux de gris est de lire directement l’image en mode niveaux de gris, nous pouvons lire une image en niveaux de gris en utilisant la méthode cv2.imread(path, flag)
de la bibliothèque OpenCV
.
Supposons que la valeur flag
de la méthode cv2.imread()
soit égale à 1. Dans ce cas, elle lira l’image en excluant le canal alpha, si 0
elle lira l’image en niveaux de gris, et si elle est égale à -1
la méthode lira l’image, y compris les informations sur le canal alpha.
Par conséquent, nous pouvons lire une image en niveaux de gris à partir d’un chemin donné en utilisant la méthode imread()
en passant la valeur de l’argument flag
comme 1
.
L’exemple de code ci-dessous montre comment utiliser la méthode cv2.imread()
pour lire une image en niveaux de gris en Python:
import cv2
imgGray = cv2.imread("test.jpg", 0)
Convertir une image en niveaux de gris en Python à l’aide de la formule de conversion et de la bibliothèque Matplotlib
Nous pouvons également convertir une image en niveaux de gris en utilisant la formule de conversion standard RGB en niveaux de gris qui est imgGray = 0.2989 * R + 0.5870 * G + 0.1140 * B
.
Nous pouvons implémenter cette méthode en utilisant la bibliothèque Matplotlib
en Python, nous devons d’abord lire l’image en utilisant la méthode mpimg.imread()
puis obtenir les matrices de dimension rouge, bleue et verte de l’image RVB après avoir obtenu les matrices nous pouvons appliquer la formule sur eux pour obtenir l’image en niveaux de gris. Nous devons multiplier les matrices complètes avec les valeurs données dans la formule pour obtenir l’image en niveaux de gris.
L’exemple de code ci-dessous montre comment implémenter la formule de conversion RVB en niveaux de gris en Python à l’aide de la bibliothèque Matplotlib
.
from matplotlib import pyplot as plt
import matplotlib.image as mpimg
img = mpimg.imread("test.jpg")
R, G, B = img[:, :, 0], img[:, :, 1], img[:, :, 2]
imgGray = 0.2989 * R + 0.5870 * G + 0.1140 * B
plt.imshow(imgGray, cmap="gray")
plt.show()