Convertir imagen a escala de grises en Python
-
Convertir una imagen a escala de grises en Python usando el método
image.convert()
de la bibliotecapillow
-
Convertir una imagen a escala de grises en Python usando el método
color.rgb2gray()
del móduloscikit-image
-
Convertir una imagen a escala de grises en Python usando el método
cv2.imread()
de la bibliotecaOpenCV
-
Convertir una imagen a escala de grises en Python usando la fórmula de conversión y la biblioteca
Matplotlib
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:
Imagen en escala de grises convertida:
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()