L'espace colorimétrique HSV utilisant OpenCV en Python
- Espace colorimétrique HSV
- Convertir l’image en espace colorimétrique HSV dans OpenCV
- Détecter la couleur à l’aide de l’espace colorimétrique HSV dans OpenCV
- Conclusion
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:
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:
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
.
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