El espacio de color HSV usando OpenCV en Python
- Espacio de color HSV
- Convertir imagen a espacio de color HSV en OpenCV
- Detectar color utilizando el espacio de color HSV en OpenCV
- Conclusión
Al procesar imágenes en programación, las convertimos en variables con valores numéricos y trabajamos sobre dichos valores. Cada imagen puede tener algunos colores deseados.
Usamos modelos de color para asignar estos colores a valores numéricos. Algunos modelos de color comunes son RGB, CMYK, HSV y más.
Podemos usar la biblioteca opencv
para procesar y trabajar con imágenes y videos en Python. Esta biblioteca está llena de funciones que pueden implementar algoritmos y técnicas complejas para imágenes.
Este tutorial discutirá el espacio de color HSV en la biblioteca opencv
.
Espacio de color HSV
De forma predeterminada, el modelo de color RGB representa los colores en las imágenes. Esto se debe a que RGB es el modelo de color más utilizado en gráficos y puede representar un amplio espectro de colores.
Sin embargo, uno de los modelos más útiles es el modelo HSV.
El modelo HSV se utiliza para representar las gamas de colores del modelo RGB en forma cilíndrica. Este espacio de color se usa mucho para el seguimiento de objetos.
El modelo de color HSV significa Hue
, Saturation
y Brightness
(Value
).
El atributo Hue
se usa para especificar el matiz del color que se está usando, y el atributo Saturation
determina la cantidad en la que se usa el color. El atributo Valor
se utiliza para especificar el brillo del color.
Convertir imagen a espacio de color HSV en OpenCV
Usando la biblioteca opencv
, podemos convertir imágenes de un espacio de color a otro. Para ello utilizamos la función cvtColor()
.
Cuando se lee una imagen usando la función imread()
, está en el espacio de color RGB. Podemos convertir esto a HSV usando la función cvtColor()
.
Vea el siguiente ejemplo.
import cv2
i = cv2.imread("deftstack.png")
img = cv2.cvtColor(i, cv2.COLOR_BGR2HSV)
cv2.imshow("Final", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Producción:
En el ejemplo anterior, tenga en cuenta el atributo cv2.BGR2HSV
especificado en la función cvtColor()
. Especifica que estamos convirtiendo la imagen del espacio de color RGB al HSV.
La combinación de la función waitKey()
y destroyAllWindows()
se utiliza para esperar a que el usuario pulse alguna tecla antes de cerrar la ventana de salida.
El cv2.BGR2HSV
convierte la imagen de RGB a HSV con un rango H
de 0 a 180. También podemos usar el cv2.BR2HSV_FULL
para convertir la imagen a HSV con un rango H
de 0 a 255 .
Detectar color utilizando el espacio de color HSV en OpenCV
Como se mencionó, el uso principal de este espacio de color es para el seguimiento de objetos. Podemos usar este modelo para crear máscaras que pueden mapear algunos colores específicos de una imagen.
Cada color en el modelo HSV tiene una gama de colores. Los límites superior e inferior de su rango se pueden usar para detectar colores.
Podemos usar la función inRange()
para devolver una máscara binaria que detecta un color dado usando sus límites superior e inferior del espacio de color HSV.
Vea el código a continuación.
import cv2
import numpy as np
img = cv2.imread("img3.jpeg")
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
bound_lower = np.array([25, 20, 20])
bound_upper = np.array([100, 255, 255])
mask_green = cv2.inRange(hsv_img, bound_lower, bound_upper)
cv2.imshow("Mask", mask_green)
cv2.waitKey(0)
cv2.destroyAllWindows()
Producción:
En el ejemplo anterior, creamos una máscara binaria para detectar el color verde en una imagen. La imagen se convierte al espacio de color HSV y se define el rango para el color verde.
Usamos los límites superior e inferior con la función inRange
para detectar el color y devolver la máscara.
Esta máscara se puede mapear en la imagen para detectar el color y dibujar los límites para el color dado.
Conclusión
Este tutorial analizó los espacios de color y se centró en el espacio de color HSV en opencv
.
Comenzamos discutiendo los conceptos básicos del espacio de color HSV y cómo se asigna el color en este modelo. También se destacó la diferencia con el modelo RGB de uso común.
También demostramos cómo convertir una imagen a HSV usando opencv
.
El espacio de color HSV también se utiliza para el seguimiento de objetos. Discutimos cómo usarlo para detectar el color en una imagen dada usando los límites superior e inferior del color dado con la función inRange
de la biblioteca opencv
.
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn