Convertir l'image en niveaux de gris en Python

Muhammad Waiz Khan 30 janvier 2023
  1. Convertir une image en niveaux de gris en Python en utilisant la méthode image.convert() de la bibliothèque pillow
  2. Convertir une image en niveaux de gris en Python en utilisant la méthode color.rgb2gray() du module scikit-image
  3. Convertir une image en niveaux de gris en Python en utilisant la méthode cv2.imread() de la bibliothèque OpenCV
  4. Convertir une image en niveaux de gris en Python à l’aide de la formule de conversion et de la bibliothèque Matplotlib
Convertir l'image en niveaux de gris en Python

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:

exemple d’image

Image en niveaux de gris convergents:

exemple d’image gris

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()

Article connexe - Python Image