L'espace colorimétrique HSV utilisant OpenCV en Python

Manav Narula 30 janvier 2023
  1. Espace colorimétrique HSV
  2. Convertir l’image en espace colorimétrique HSV dans OpenCV
  3. Détecter la couleur à l’aide de l’espace colorimétrique HSV dans OpenCV
  4. Conclusion
L'espace colorimétrique HSV utilisant OpenCV en Python

Lors du traitement d’images en programmation, nous les convertissons en variables avec des valeurs numériques et travaillons sur ces valeurs. Chaque image peut avoir des couleurs souhaitées.

Nous utilisons des modèles de couleurs pour mapper ces couleurs sur des valeurs numériques. Certains modèles de couleurs courants sont RVB, CMJN, HSV, etc.

Nous pouvons utiliser la bibliothèque opencv pour traiter et travailler avec des images et des vidéos en Python. Cette bibliothèque regorge de fonctions capables d’implémenter des algorithmes et des techniques complexes pour les images.

Ce tutoriel traitera de l’espace colorimétrique HSV dans la bibliothèque opencv.

Espace colorimétrique HSV

Par défaut, le modèle de couleurs RVB représente les couleurs dans les images. En effet, le RVB est le modèle de couleurs le plus couramment utilisé dans les graphiques et peut représenter un vaste spectre de couleurs.

Cependant, l’un des modèles les plus utiles est le modèle HSV.

Le modèle HSV est utilisé pour représenter les gammes de couleurs du modèle RVB sous une forme cylindrique. Cet espace colorimétrique est très utilisé pour le suivi d’objets.

Le modèle de couleur HSV signifie Hue, Saturation et Brightness (Value).

L’attribut Hue est utilisé pour spécifier la teinte de la couleur utilisée, et l’attribut Saturation détermine la quantité dans laquelle la couleur est utilisée. L’attribut Value permet de spécifier la luminosité de la couleur.

Convertir l’image en espace colorimétrique HSV dans OpenCV

En utilisant la bibliothèque opencv, nous pouvons convertir des images d’un espace colorimétrique à un autre. Pour cela, nous utilisons la fonction cvtColor().

Lorsqu’une image est lue à l’aide de la fonction imread(), elle est dans l’espace colorimétrique RVB. Nous pouvons convertir cela en HSV en utilisant la fonction cvtColor().

Voir l’exemple suivant.

import cv2

i = cv2.imread("deftstack.png")
img = cv2.cvtColor(i, cv2.COLOR_BGR2HSV)
cv2.imshow("Final", img)

cv2.waitKey(0)
cv2.destroyAllWindows()

Production:

Convertir une image de RVB en HSV à l’aide de la fonction cvtColor

Dans l’exemple ci-dessus, notez l’attribut cv2.BGR2HSV spécifié dans la fonction cvtColor(). Il précise que nous convertissons l’image de l’espace colorimétrique RVB au HSV.

La combinaison des fonctions waitKey() et destroyAllWindows() est utilisée pour attendre que l’utilisateur appuie sur une touche avant de fermer la fenêtre de sortie.

Le cv2.BGR2HSV convertit l’image de RVB en HSV avec une plage H de 0 à 180. Nous pouvons également utiliser le cv2.BR2HSV_FULL pour convertir l’image en HSV avec une plage H de 0 à 255.

Détecter la couleur à l’aide de l’espace colorimétrique HSV dans OpenCV

Comme indiqué, l’utilisation principale de cet espace colorimétrique est le suivi d’objets. Nous pouvons utiliser ce modèle pour créer des masques qui peuvent mapper certaines couleurs spécifiques à partir d’une image.

Chaque couleur du modèle HSV a une gamme de couleurs. Les limites supérieure et inférieure de leur plage peuvent être utilisées pour détecter les couleurs.

Nous pouvons utiliser la fonction inRange() pour renvoyer un masque binaire qui détecte une couleur donnée en utilisant ses limites supérieure et inférieure de l’espace colorimétrique HSV.

Voir le code ci-dessous.

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()

Production:

Trouvez des couleurs à l’aide des gammes HSV avec la fonction inRange

Dans l’exemple ci-dessus, nous créons un masque binaire pour détecter la couleur verte dans une image. L’image est convertie dans l’espace colorimétrique HSV et la plage de la couleur verte est définie.

Nous utilisons les bornes supérieure et inférieure avec la fonction inRange pour détecter la couleur et renvoyer le masque.

Ce masque peut être mappé sur l’image pour détecter la couleur et tracer les limites de la couleur donnée.

Conclusion

Ce tutoriel a discuté des espaces colorimétriques et s’est concentré sur l’espace colorimétrique HSV dans opencv.

Nous avons commencé par discuter des bases de l’espace colorimétrique HSV et de la manière dont la couleur est mappée dans ce modèle. La différence avec le modèle RVB couramment utilisé a également été soulignée.

Nous avons également montré comment convertir une image en HSV en utilisant opencv.

L’espace colorimétrique HSV est également utilisé pour le suivi d’objets. Nous avons discuté de la façon de l’utiliser pour détecter la couleur dans une image donnée en utilisant les limites supérieure et inférieure de la couleur donnée avec la fonction inRange de la bibliothèque opencv.

Auteur: Manav Narula
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

Article connexe - Python OpenCV