Skip to content

Latest commit

 

History

History
100 lines (89 loc) · 4.19 KB

Documentation.md

File metadata and controls

100 lines (89 loc) · 4.19 KB
  1. Importation des bibliothèques python Copiar código import cv2 import numpy as np Ce code importe deux bibliothèques essentielles:

cv2 : Une bibliothèque de traitement d'images et de vidéos fournie par OpenCV. numpy : Une bibliothèque pour les calculs mathématiques avancés et la manipulation de matrices, utilisée ici pour gérer les opérations sur les images. 2. Définition des valeurs limites pour la détection de la couleur jaune python Copiar código lo = np.array([20, 100, 100]) # Valeurs MINIMALES HSV pour le jaune hi = np.array([30, 255, 255]) # Valeurs MAXIMALES HSV pour le jaune Ici, nous définissons deux tableaux Numpy qui représentent les limites minimale et maximale pour la couleur jaune en espace de couleurs HSV. Ces valeurs sont utilisées pour créer un masque qui détecte les zones jaunes dans l'image.

  1. Définition de la couleur d'affichage pour les annotations python Copiar código color_infos = (0, 255, 255) Ce tuple définit la couleur (en format BGR) utilisée pour dessiner les cercles, les lignes et le texte sur l'image. Ici, la couleur choisie est le jaune.

  2. Capture vidéo à partir de la caméra python Copiar código cap = cv2.VideoCapture(0) Cette ligne ouvre une connexion à la webcam (indexée par 0) pour capturer le flux vidéo en temps réel.

  3. Boucle principale pour le traitement d'image python Copiar código while True: ret, frame = cap.read() La boucle while commence par capturer une image (frame) à partir de la caméra.

  4. Conversion de l'image en espace de couleurs HSV python Copiar código image = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) L'image capturée est convertie de l'espace de couleurs BGR (utilisé par défaut dans OpenCV) en HSV, ce qui est plus adapté pour la détection des couleurs.

  5. Création du masque pour la détection de la couleur jaune python Copiar código mask = cv2.inRange(image, lo, hi) Cette ligne crée un masque binaire où les pixels jaunes dans l'image sont mis en évidence (valeur de 1) et tous les autres pixels sont ignorés (valeur de 0).

  6. Application de flou pour réduire le bruit python Copiar código image = cv2.blur(image, (7, 7)) Un filtre de flou est appliqué à l'image pour lisser les contours et réduire le bruit, facilitant ainsi la détection des contours.

  7. Érosion et dilatation du masque python Copiar código mask = cv2.erode(mask, None, iterations=4) mask = cv2.dilate(mask, None, iterations=4) Ces deux opérations successives (érosion et dilatation) permettent de nettoyer le masque en supprimant les petites imperfections dues au bruit.

  8. Extraction et traitement des contours python Copiar código elements = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2] Les contours des objets jaunes dans le masque sont détectés. Seuls les contours externes sont récupérés.

  9. Identification du plus grand contour et dessin des annotations python Copiar código if len(elements) > 0: c = max(elements, key=cv2.contourArea) ((x, y), rayon) = cv2.minEnclosingCircle(c) if rayon > 30: cv2.circle(image2, (int(x), int(y)), int(rayon), color_infos, 2) cv2.circle(frame, (int(x), int(y)), 5, color_infos, 10) cv2.line(frame, (int(x), int(y)), (int(x)+150, int(y)), color_infos, 2) cv2.putText(frame, "Objet !!!", (int(x)+10, int(y) -10), cv2.FONT_HERSHEY_DUPLEX, 1, color_infos, 1, cv2.LINE_AA) Si des contours sont trouvés, le plus grand est sélectionné. Un cercle est dessiné autour du plus grand objet détecté (rayon supérieur à 30). Un point, une ligne et un texte sont également ajoutés à l'image pour indiquer la présence de l'objet.

  10. Affichage des résultats python Copiar código cv2.imshow('Camera', frame) cv2.imshow('image2', image2) cv2.imshow('Mask', mask) Trois fenêtres sont créées pour afficher :

Le flux vidéo original annoté (Camera). L'image avec le masque appliqué (image2). Le masque binaire (Mask). 13. Gestion de la sortie du programme python Copiar código if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() Le programme attend que l'utilisateur appuie sur la touche q pour quitter la boucle. La capture vidéo est relâchée et toutes les fenêtres ouvertes par OpenCV sont fermées.