Python | Escala de grises de imágenes usando OpenCV

La escala de grises es el proceso de convertir una imagen de otros espacios de color, por ejemplo, RGB, CMYK, HSV, etc., a tonos de gris. Varía entre el negro completo y el blanco completo.

Importancia de la escala de grises 

  • Reducción de dimensiones: por ejemplo, en las imágenes RGB hay tres canales de color y tiene tres dimensiones, mientras que las imágenes en escala de grises son unidimensionales.
  • Reduce la complejidad del modelo: Considere la posibilidad de entrenar el artículo neuronal en imágenes RGB de 10x10x3 píxeles. La capa de entrada tendrá 300 Nodes de entrada. Por otro lado, la misma red neuronal necesitará solo 100 Nodes de entrada para imágenes en escala de grises.
  • Para que funcionen otros algoritmos: muchos algoritmos están personalizados para funcionar solo en imágenes en escala de grises, por ejemplo, la función de detección de bordes Canny preimplementada en la biblioteca OpenCV funciona solo en imágenes en escala de grises.

Aprendamos los diferentes métodos de procesamiento de imágenes para convertir una imagen en color en una imagen en escala de grises.

Método 1: Usar la función cv2.cvtColor()

Python3

# import opencv
import cv2
 
# Load the input image
image = cv2.imread('C:\\Documents\\full_path\\tomatoes.jpg')
cv2.imshow('Original', image)
cv2.waitKey(0)
 
# Use the cvtColor() function to grayscale the image
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
 
cv2.imshow('Grayscale', gray_image)
cv2.waitKey(0) 
 
# Window shown waits for any key pressing event
cv2.destroyAllWindows()

Imagen de entrada: 

Imagen de salida: 

Método 2: Usar la función cv2.imread() con bandera = cero

Python3

# Import opencv
import cv2
 
# Use the second argument or (flag value) zero
# that specifies the image is to be read in grayscale mode
img = cv2.imread('C:\\Documents\\full_path\\tomatoes.jpg', 0)
 
cv2.imshow('Grayscale Image', img)
cv2.waitKey(0)
 
# Window shown waits for any key pressing event
cv2.destroyAllWindows()

Imagen de salida:

Método 3: Usar la manipulación de píxeles (método Promedio)

Python3

# Import opencv
import cv2
 
# Load the input image
img = cv2.imread('C:\\Documents\\full_path\\tomatoes.jpg')
 
# Obtain the dimensions of the image array
# using the shape method
(row, col) = img.shape[0:2]
 
# Take the average of pixel values of the BGR Channels
# to convert the colored image to grayscale image
for i in range(row):
    for j in range(col):
        # Find the average of the BGR pixel values
        img[i, j] = sum(img[i, j]) * 0.33
 
cv2.imshow('Grayscale Image', img)
cv2.waitKey(0)
 
# Window shown waits for any key pressing event
cv2.destroyAllWindows()

Imagen de salida:

¡Espero que haya entendido las técnicas de procesamiento de imágenes discutidas anteriormente para convertir una imagen en color en una imagen en escala de grises en Python!

Publicación traducida automáticamente

Artículo escrito por Sourabh_Sinha y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *