Table des matières:

Détection simple des couleurs à l'aide d'OpenCV : 6 étapes
Détection simple des couleurs à l'aide d'OpenCV : 6 étapes

Vidéo: Détection simple des couleurs à l'aide d'OpenCV : 6 étapes

Vidéo: Détection simple des couleurs à l'aide d'OpenCV : 6 étapes
Vidéo: Tuto#4 [OpenCV] Détection d'objet par sa couleur avec inRange 2024, Juin
Anonim
Détection de couleur simple à l'aide d'OpenCV
Détection de couleur simple à l'aide d'OpenCV

Salut! Aujourd'hui, je vais montrer une méthode simple pour détecter une couleur à partir d'une vidéo en direct à l'aide d'OpenCV et de python.

Fondamentalement, je vais simplement tester que la couleur requise est présente ou non dans le cadre d'arrière-plan et à l'aide des modules OpenCV, je vais masquer cette région et afficher simultanément le cadre.

Étape 1: Les fichiers d'en-tête

Les fichiers d'en-tête
Les fichiers d'en-tête

Maintenant, j'ai utilisé deux fichiers d'en-tête, à savoir cv2 et NumPy. Fondamentalement, cv2 est la bibliothèque OpenCV qui charge tous les fichiers c++ importants tout en utilisant les commandes dans les codes (elle contient toutes les définitions).

Et Numpy est une bibliothèque python essentielle pour stocker un tableau multidimensionnel. Nous utiliserons pour stocker nos coordonnées de gamme de couleurs.

Et numpy as np aide essentiellement notre code à raccourcir un peu en utilisant np à chaque fois au lieu de numpy.

Étape 2: Capturer la vidéo

Capturer la vidéo
Capturer la vidéo

C'est assez simple en utilisant python. Ici, nous avons juste besoin d'allumer l'enregistreur vidéo pour qu'il puisse commencer à enregistrer les images.

Maintenant, la valeur à l'intérieur de VideoCapture indique la caméra, dans mon cas la caméra est connectée à mon ordinateur portable, donc 0.

Vous pouvez aller de la même manière à 1 pour la caméra secondaire et ainsi de suite. VideoCapture crée l'objet correspondant.

Étape 3: Capturer le cadre et définir la couleur

Capturer le cadre et définir la couleur
Capturer le cadre et définir la couleur

Maintenant, ici, nous devons faire quelque chose pour pouvoir capturer l'image instantanée de la vidéo qui nous aidera à extraire l'image et nous pouvons travailler là-dessus selon les besoins.

La boucle "while" nous aidera à exécuter la boucle jusqu'à notre temps requis. Maintenant " _, frame = cap.read() " est utilisé pour vérifier la validité de la Frame capturée et la stocker. "cap.read() est une variable booléenne et renvoie true si le cadre est lu correctement et si vous n'obtenez aucun cadre, il n'affichera aucune erreur, vous obtiendrez simplement Aucun.

Maintenant, les lignes 11 et 12 définissent essentiellement la gamme de couleurs que nous devons détecter. Pour cela, j'ai utilisé la couleur bleue.

Vous pouvez continuer avec n'importe quelle couleur pour laquelle vous devez simplement taper les valeurs BGR pour cette couleur particulière. Il est préférable de définir deux tableaux à l'aide de tableaux numpy car la détection d'une couleur particulière dans le monde réel ne servira pas notre objectif. Nous définirons plutôt une plage de couleur bleue afin qu'elle détecte dans la plage.

Pour cela, j'ai défini deux variables stockant les valeurs BGR inférieures et les valeurs BGR supérieures.

Étape 4: Masquage et extraction

Masquage et extraction
Masquage et extraction

Maintenant, voici la tâche principale de masquer le cadre et d'extraire la couleur du cadre. J'ai utilisé les commandes prédéfinies présentes dans la bibliothèque d'OpenCV pour faire le masquage. Fondamentalement, le masquage est le processus de suppression d'une partie du cadre, c'est-à-dire que nous supprimerons les pixels dont les valeurs BGR de couleur ne se situent pas dans la plage de couleurs définie et cela est fait par cv2.inRange. Ensuite, nous appliquons la gamme de couleurs à l'image masquée en fonction des valeurs de pixels et pour cela, nous utiliserons cv2.bitwise_and, Il affectera simplement les couleurs à la région masquée en fonction des valeurs de masque et de gamme de couleurs.

Lien pour cv2. bitwise_and:

Étape 5: enfin afficher

Affichage enfin!
Affichage enfin!

Ici, j'ai utilisé le cv2.imshow() de base pour afficher chaque image sous forme d'image. Comme j'ai les données de trame stockées dans des variables, je peux les récupérer dans imshow(). Ici, j'ai affiché les trois cadres, originaux, masqués et colorés.

Maintenant, nous devons quitter la boucle while. Pour cela, nous pouvons simplement implémenter le cv2.wait. Key(). Fondamentalement, il indique le temps d'attente avant de répondre. Donc, si vous passez 0, il attendra indéfiniment et 0xFF indique que l'architecture est en 64 bits. " ord() " spécifie le caractère qui, lorsqu'il est pressé, exécutera la commande break dans le bloc if et il sortira de la boucle.

Ensuite, cap.release() ferme le magnétoscope et cv2.destroyAllWindows() ferme toutes les fenêtres ouvertes.

Si vous avez un problème, s'il vous plaît laissez-moi savoir.

Lien vers le code source:

Conseillé: