Le laboratoire de travail avec les espaces de couleur

OpenCVBeginner
Pratiquer maintenant

Introduction

Bienvenue dans ce tutoriel sur les espaces de couleur OpenCV-Python!

Un espace de couleur est une manière de représenter les canaux de couleur dans une image. Il existe plusieurs espaces de couleur différents, mais les trois plus courants sont :

  • BGR (Blue, Green, Red) : L'espace de couleur par défaut utilisé par OpenCV.
  • Gray : Une représentation en niveaux de gris de l'image.
  • HSV (Hue, Saturation, Value) : Une représentation en coordonnées cylindriques des couleurs.
    Dans ce tutoriel, nous nous concentrerons sur la conversion d'images entre les espaces de couleur BGR, Gray et HSV.

Utilisez la fonction cv.cvtColor() pour convertir et afficher des images entre les espaces de couleur

Pour convertir des images entre les espaces de couleur, nous utilisons la fonction cv.cvtColor(). Commençons par importer les bibliothèques nécessaires et lire une image :

Ouvrir l'interpréteur Python

Ouvrez l'interpréteur Python en tapant la commande suivante dans le terminal.

python3

Utilisez la fonction cv.imread() pour lire l'image image.jpg que nous avons préparée dans le dossier par défaut.

import cv2 as cv
import numpy as np

## Lire l'image
image = cv.imread('image.jpg')

Du BGR au niveau de gris

Pour convertir l'image du BGR au niveau de gris, utilisez le drapeau cv.COLOR_BGR2GRAY :

## Convertir l'image en niveaux de gris
gray_image = cv.cvtColor(image, cv.COLOR_BGR2GRAY)

Du BGR à l'HSV

Pour convertir l'image du BGR à l'HSV, utilisez le drapeau cv.COLOR_BGR2HSV :

## Utiliser l'espace de couleur HSV. L'espace de couleur HSV est principalement utilisé pour la détection d'objets
hsv_image = cv.cvtColor(image, cv.COLOR_BGR2HSV)

Afficher les images converties

Pour afficher l'image d'origine et les images converties, utilisez les fonctions cv.imwrite() :

## Enregistrer l'image dans le fichier spécifié
cv.imwrite('image.jpg', image)
cv.imwrite('gray_image.jpg', gray_image)
cv.imwrite('hsv_image.jpg', hsv_image)

utilisez la fonction cv.inRange() pour extraire un objet d'une couleur spécifique d'une image

Pour extraire un objet d'une couleur spécifique d'une image, vous pouvez utiliser la fonction cv.inRange(). Dans cet exemple, nous allons extraire un objet bleu de l'image.

Définir la plage de couleur

Tout d'abord, définissez les limites inférieures et supérieures de la couleur bleue dans l'espace de couleur HSV :

## Le bleu est représenté en HSV avec une teinte d'environ 240 degrés sur 360.
## La plage de teintes dans OpenCV-HSV est de 0 à 180, pour stocker la valeur sur 8 bits.
## Ainsi, le bleu est représenté en OpenCV-HSV avec une valeur de H d'environ 240 / 2 = 120.
## Pour détecter correctement le bleu, les valeurs suivantes peuvent être choisies :
blue_lower = np.array([100, 150, 0], np.uint8)
blue_upper = np.array([140, 255, 255], np.uint8)

Appliquer un seuil à l'image

Appliquez un seuil à l'image HSV pour ne conserver que les couleurs bleues :

## Masque des couleurs bleues
blue_mask = cv.inRange(hsv_image, blue_lower, blue_upper)

Appliquer le masque

Appliquez le masque à l'image d'origine pour extraire l'objet bleu :

## Utiliser le masque pour extraire l'objet bleu
blue_object = cv.bitwise_and(image, image, mask=blue_mask)

Afficher l'objet extrait

Affichez l'image d'origine et l'objet bleu extrait :

## Enregistrer l'image dans le fichier spécifié
cv.imwrite('blue_object.jpg', blue_object)

Résumé

Dans ce tutoriel, nous avons abordé les bases des espaces de couleur OpenCV-Python. Grâce à ces connaissances, vous pouvez désormais travailler avec différents espaces de couleur et les appliquer à diverses tâches de traitement d'images. Vous pouvez également experimenter avec les autres espaces de couleur pris en charge par OpenCV, tels que LAB ou YCrCb.