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