Convertir imagen a escala de grises en Python

Muhammad Waiz Khan 30 enero 2023
  1. Convertir una imagen a escala de grises en Python usando el método image.convert() de la biblioteca pillow
  2. Convertir una imagen a escala de grises en Python usando el método color.rgb2gray() del módulo scikit-image
  3. Convertir una imagen a escala de grises en Python usando el método cv2.imread() de la biblioteca OpenCV
  4. Convertir una imagen a escala de grises en Python usando la fórmula de conversión y la biblioteca Matplotlib
Convertir imagen a escala de grises en Python

Este tutorial explicará varios métodos para convertir una imagen a escala de grises en Python. Una imagen en escala de grises es una imagen en la que un solo píxel representa la cantidad de luz o solo contiene información sobre la intensidad de la luz. Es una imagen unidimensional y solo tiene diferentes tonos de color gris.

Como las imágenes en escala de grises son unidimensionales, se utilizan para disminuir la complejidad del entrenamiento de los modelos en varios problemas y en algoritmos como la detección de bordes Canny.

Este artículo analizará cómo podemos convertir una imagen a escala de grises o leer una imagen como escala de grises en Python utilizando varios métodos de los módulos de Python.

Convertir una imagen a escala de grises en Python usando el método image.convert() de la biblioteca pillow

El método image.convert(mode, ..) toma una imagen como entrada y la convierte en el tipo de imagen deseado especificado en el argumento mode. El modo incluye imágenes en blanco y negro de píxeles de 1 y 8 bits, imágenes RGB, imágenes HSV, imágenes BGR e imágenes LAB, etc.

Como queremos convertir nuestra imagen a escala de grises, podemos pasar 1 como argumento de modo para el modo blanco y negro de 1 bit, L para imagen en blanco y negro de 8 bits y LA para el modo alfa. El siguiente código de ejemplo demuestra cómo utilizar el método image.convert() de la biblioteca pillow para convertir una imagen a escala de grises en Python:

from PIL import Image

img = Image.open("test.jpg")
imgGray = img.convert("L")
imgGray.save("test_gray.jpg")

Imagen original:

ejemplo de imagen

Imagen en escala de grises convertida:

imagen de ejemplo gris

Convertir una imagen a escala de grises en Python usando el método color.rgb2gray() del módulo scikit-image

El color.rgb2gray() toma una imagen en formato RGB como entrada y devuelve una copia en escala de grises de la imagen de entrada. El siguiente ejemplo de código demuestra cómo usar el método color.rgb2gray() del módulo scikit-image para obtener una imagen en escala de grises en Python.

from skimage import color
from skimage import io

img = io.imread("test.jpg")
imgGray = color.rgb2gray(img)

Convertir una imagen a escala de grises en Python usando el método cv2.imread() de la biblioteca OpenCV

Otro método para obtener una imagen en escala de grises es leer la imagen en el modo de escala de grises directamente, podemos leer una imagen en escala de grises usando el método cv2.imread(path, flag) de la biblioteca OpenCV.

Suponga que el valor de flag del método cv2.imread() es igual a 1. En ese caso, leerá la imagen excluyendo el canal alfa, si es 0 leerá la imagen en escala de grises, y si es igual al método -1 leerá la imagen, incluida la información del canal alfa.

Por lo tanto, podemos leer una imagen en escala de grises de una ruta dada usando el método imread() pasando el valor del argumento flag como 1.

El siguiente código de ejemplo demuestra cómo usar el método cv2.imread() para leer una imagen en escala de grises en Python:

import cv2

imgGray = cv2.imread("test.jpg", 0)

Convertir una imagen a escala de grises en Python usando la fórmula de conversión y la biblioteca Matplotlib

También podemos convertir una imagen a escala de grises usando la fórmula estándar de conversión de RGB a escala de grises que es imgGray = 0.2989 * R + 0.5870 * G + 0.1140 * B.

Podemos implementar este método usando la biblioteca Matplotlib en Python, primero necesitamos leer la imagen usando el método mpimg.imread() y luego obtener los Arrays de dimensión roja, azul y verde de la imagen RGB después de obtener los Arrays podemos aplicarles la fórmula para obtener la imagen en escala de grises. Necesitamos multiplicar los Arrays completas con los valores dados en la fórmula para obtener la imagen en escala de grises.

El siguiente ejemplo de código demuestra cómo podemos implementar la fórmula de conversión de RGB a escala de grises en Python usando la biblioteca 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()

Artículo relacionado - Python Image