Table des matières:

Détection des couleurs en Python à l'aide d'OpenCV : 8 étapes
Détection des couleurs en Python à l'aide d'OpenCV : 8 étapes

Vidéo: Détection des couleurs en Python à l'aide d'OpenCV : 8 étapes

Vidéo: Détection des couleurs en Python à l'aide d'OpenCV : 8 étapes
Vidéo: Seuillage d'otsu avec Opencv python 2024, Juillet
Anonim
Image
Image

Salut! Cette instructable est utilisée pour expliquer comment extraire une couleur spécifique d'une image en python à l'aide de la bibliothèque openCV. Si vous débutez dans cette technique, ne vous inquiétez pas, à la fin de ce guide, vous pourrez programmer votre propre programme de détection des couleurs.

Voici les fonctions ou nous pouvons dire les techniques que vous apprendrez, 1. Comment lire une image

2. Comment créer des barres de piste

3. Comment ajuster la valeur de la teinte, de la saturation et de la valeur d'une image à l'aide des barres de suivi

4. Et puis il y aura votre sortie finale

Vous pouvez regarder la vidéo de la sortie que j'ai jointe ci-dessous.

Alors, commençons

Fournitures

  • Python 3
  • bibliothèque openCV
  • bibliothèque numpy

Étape 1: Importer des bibliothèques

Importation de bibliothèques
Importation de bibliothèques

L'image est de ferrari jaune comme indiqué et nous allons programmer pour extraire uniquement la couleur jaune de cette image

La première étape sera d'importer nos bibliothèques

1. Y compris la bibliothèque openCV. Il s'appelle cv2 en python

2. Y compris la bibliothèque numpy en tant que np. Le "as" nous permet de nous numpy comme np donc pas besoin d'écrire numpy encore et encore

Étape 2: Création de barres de piste

Création de barres de piste
Création de barres de piste

Les barres de piste sont créées pour ajuster la valeur de la teinte, de la saturation et de la valeur dans une image.

cv2.namedWindow("TrackBars") Cette ligne de code est utilisée pour créer une nouvelle fenêtre de sortie et le nom de la fenêtre est donné sous forme de TrackBars (Vous pouvez donner n'importe quel nom que vous voulez)

cv2.resizeWindow("TrackBars", 600, 250) Cette fonction permet de redimensionner une fenêtre. "TrackBars" correspond à la fenêtre que vous souhaitez redimensionner car je voulais redimensionner la fenêtre TrackBars. J'ai écrit ce nom. Suivi de deux nombres entiers. Ces deux nombres entiers sont la largeur et la hauteur. Vous pouvez jouer avec ces deux nombres pour changer la taille

Étape 3: Création de TrackBars pour la teinte, la saturation et la valeur

Création de TrackBars pour la teinte, la saturation et la valeur
Création de TrackBars pour la teinte, la saturation et la valeur
Création de TrackBars pour la teinte, la saturation et la valeur
Création de TrackBars pour la teinte, la saturation et la valeur

Nous allons maintenant créer un total de 6 TrackBars pour la teinte, la saturation et la valeur. Chacun en aura deux, c'est-à-dire 1 pour le minimum et 1 pour le maximum. Nous utiliserons la fonction createTrackbar d'openCV. Nous allons d'abord voir la syntaxe de cette fonction.

cv2.createTrackbar("WINDOWNAME", "MAINWINDOWNAME", "RANGE"). Cela peut être déroutant, mais ne vous inquiétez pas, nous passerons par chaque étape. Gardez une chose à l'esprit que dans openCV, les valeurs de teinte sont de 179, la saturation est de 255 et la valeur est de 255

1. Création de TrackBar pour hue min:

cv2.createTrackbar("Hue min", "TrackBars", 0, 179, vide)

Dans cette Hue min est le nom de la barre de piste, TrackBars est la fenêtre principale, 0 est la position sur laquelle notre curseur sera et 179 est la plage signifie que le silder passera de 0 à 179

2. Création de TrackBar pour hue max:

cv2.createTrackbar("Hue max", "TrackBars", 179, 179, vide)

Dans cette Hue max est le nom de la barre de piste, TrackBars est la fenêtre principale, 179 est la position sur laquelle notre curseur sera et 179 est la plage maximale signifie que le silder passera de 179-0

3. De même, répétez les étapes pour sat min, sat max, val min et val max comme indiqué dans l'image

L'image avec le fond blanc est l'image de sortie. Voici à quoi ressembleront vos barres de piste

Étape 4: Comment lire et redimensionner l'image

Comment lire et redimensionner une image
Comment lire et redimensionner une image

cv2.imread() vous permet de lire l'image. Une pensée importante que vous devez garder à l'esprit que l'emplacement de votre image doit être dans le même dossier où le programme est enregistré. Nous mettrons une boucle while car elle devrait s'exécuter jusqu'à ce qu'elle lise l'image ou nous pouvons dire jusqu'à ce que la condition soit vraie

img = cv2.imread("ferrari.jpg")

  • En cela, j'ai créé un nom de variable " img " dans lequel je stocke l'image
  • Dans cv2.imread, écrivez le nom de l'image avec son extension entre guillemets doubles

Pour redimensionner une image, nous utiliserons la fonction cv2.resize. Cette partie est facultative, si vous souhaitez redimensionner alors vous pouvez utiliser cette fonction

Dans cv2.resize, écrivez d'abord le nom de la variable dans laquelle l'image est stockée, puis sa largeur et sa hauteur

Étape 5: Lecture des valeurs de la barre de piste pour l'appliquer à une image

Lecture des valeurs de la barre de piste pour l'appliquer à une image
Lecture des valeurs de la barre de piste pour l'appliquer à une image
Lecture des valeurs de la barre de piste pour l'appliquer à une image
Lecture des valeurs de la barre de piste pour l'appliquer à une image

Ok, maintenant nous allons lire les valeurs de la barre de suivi afin de pouvoir l'appliquer à notre image. Nous obtiendrons les valeurs en utilisant la fonction cv2.getTrackbarPos().

Commençons par cette partie…

h_min = cv2.getTrackbarPos("Hue min", "TrackBars")

Dans la déclaration ci-dessus, je crée un nom de variable h_min dans lequel je stockerai la valeur de Hue min. Donc, à l'intérieur de cv2.getTrackbarPos, le 1er argument serait " Hue min " car je veux des valeurs de hue min (l'orthographe doit être exactement la même que celle de la fonction createTrackbar) et le 2ème argument serait le nom de la fenêtre de la barre de suivi à laquelle il appartient.

  • Répétez le même processus pour h_max et le reste des fonctions, comme indiqué dans l'image ci-dessus, puis imprimez toutes les valeurs à l'aide de print()
  • La sortie est montrée dans la deuxième image. Il imprime les valeurs de h_min, h_max, s_min, s_max, v_min, s_max

Étape 6: Affichage de l'image et définition des limites supérieure et inférieure

Affichage de l'image et réglage des limites supérieure et inférieure
Affichage de l'image et réglage des limites supérieure et inférieure

Maintenant que nous avons les valeurs min et max de la teinte, de la saturation et de la valeur, nous utiliserons cette valeur pour filtrer l'image afin que nous puissions la sortie de couleur particulière d'une image.

Nous allons créer un masque pour cela en utilisant la fonction cv2.inRange. Et avant cela, nous définirons les limites supérieure et inférieure de teinte, de saturation et de valeur

Créez donc un nom de variable "inférieur" et en utilisant la fonction de tableau numpy, définissez la plage de min pour les 3 comme suit

inférieur = np.array([h_min, s_min, v_min])

Répétez la même étape pour le haut

supérieur = np.array([h_max, s_max, v_max])

Maintenant, nous allons créer un masque comme suit

mask = cv2.inRange(resize, lower, upper) À l'intérieur de cv2.inRang, le 1er argument serait la variable dans laquelle mon image finale est stockée, le 2ème argument sera la limite inférieure et le 3ème argument serait la limite supérieure.

Nous allons maintenant afficher l'image principale et le masque. Pour afficher, nous utiliserons la fonction cv2.imshow()

cv2.imshow("img", redimensionner) Ceci permet d'afficher l'image principale. Le 1er argument est le nom de la fenêtre que vous pouvez donner à n'importe quel nom et le 2ème argument est la variable dans laquelle est stockée mon image principale que vous souhaitez afficher.

De même, répétez les étapes pour le masque

cv2.imshow("Sortie", masque)

Étape 7: maintenant la dernière étape

Maintenant la dernière étape
Maintenant la dernière étape

Dans cette dernière étape, nous extrairons la couleur de la voiture et de l'affichage.

J'ai créé un résultat de nom de variable. Encore une fois, vous pouvez donner le nom que vous voulez. Nous utiliserons donc la fonction cv2.bitwise_and() dans laquelle nous ajouterons des images ensemble et créerons une nouvelle image. Et partout où les pixels des deux images sont présents, cela sera considéré comme oui ou " 1 ".

result = cv2.bitwise_and(redimensionner, redimensionner, masque=masque)

  • En cela le 1er argument sera notre image
  • Le 2ème argument sera également notre image d'origine mais suivi du masque appliqué que nous avons créé auparavant
  • Et enfin, affichez simplement le résultat en utilisant la fonction imshow

Il suffit de copier coller cette dernière étape c'est juste un délai et vous pouvez quitter la fenêtre de sortie en appuyant sur " a " sur le clavier

Étape 8: Résultats finaux

Conseillé: