La segmentación de color o el filtrado de color se usa ampliamente en OpenCV para identificar objetos/regiones específicos que tienen un color específico. El espacio de color más utilizado es el espacio de color RGB, se denomina espacio de color aditivo ya que los tres tonos de color se suman para dar color a la imagen. Para identificar una región de un color específico, pon el umbral y crea una máscara para separar los diferentes colores. El espacio de color HSV es mucho más útil para este propósito ya que los colores en el espacio HSV están mucho más localizados, por lo que se pueden separar fácilmente. El filtrado de color tiene muchas aplicaciones y casos de uso, como criptografía, análisis de infrarrojos, conservación de alimentos perecederos, etc. En tales casos, los conceptos de procesamiento de imágenes se pueden utilizar para descubrir o extraer regiones de un color particular.
Para la segmentación del color, todo lo que necesitamos son los valores de umbral o el conocimiento del rango de colores de límite inferior y límite superior en uno de los espacios de color. Funciona mejor en el espacio de color Tono-Saturación-Valor.
Después de especificar el rango de color a segmentar, es necesario crear una máscara en consecuencia y, al usarla, se puede separar una región particular de interés.
A continuación se muestra el código:
Python3
import cv2 import numpy as np cap = cv2.VideoCapture(0) while(1): _, frame = cap.read() # It converts the BGR color space of image to HSV color space hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # Threshold of blue in HSV space lower_blue = np.array([60, 35, 140]) upper_blue = np.array([180, 255, 255]) # preparing the mask to overlay mask = cv2.inRange(hsv, lower_blue, upper_blue) # The black region in the mask has the value of 0, # so when multiplied with original image removes all non-blue regions result = cv2.bitwise_and(frame, frame, mask = mask) cv2.imshow('frame', frame) cv2.imshow('mask', mask) cv2.imshow('result', result) cv2.waitKey(0) cv2.destroyAllWindows() cap.release()
Imagen original-
Imagen enmascarada-
Regiones segmentadas de color azul-
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