El espacio de color HSV usando OpenCV en Python

Manav Narula 30 enero 2023
  1. Espacio de color HSV
  2. Convertir imagen a espacio de color HSV en OpenCV
  3. Detectar color utilizando el espacio de color HSV en OpenCV
  4. Conclusión
El espacio de color HSV usando OpenCV en Python

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:

Convierta la imagen de RGB a HSV usando la función cvtColor

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:

Encuentre colores usando los rangos HSV con la función inRange

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 Narula avatar Manav Narula avatar

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

Artículo relacionado - Python OpenCV