#!/usr/bin/env python # -*- coding: utf-8 -*- ''' Application de démonstration de détection Vidéo. Cette application permet de détecter des cercles, et d'afficher le résultat. Utilise la librairie de fonctions OpenCV. ''' # Compatibilité Python 2/3 from __future__ import print_function ############################################################################### # Informations de versions ############################################################################### __project__ = u'Particles Detection' __author__ = u'Simon CHOLLET' __modifiers__ = u'' __history__ = u''' - Révision 1.0 (2016/10/04) : Première version. ''' __date__ = u'2016/10/04' __version__ = u'1.0.0' ############################################################################### # Importations ############################################################################### # Librairie OpenCV import cv2 # Librairie Numpy import numpy as np ############################################################################### # Définitions specifiques ############################################################################### # Numéro de Webcam à utiliser : -1 pour la première WEBCAM_NUMBER = 0 ############################################################################### # Déclaration des classes / fonctions ############################################################################### ############################################################################### # Exécution ... ############################################################################### # # # Fonction appelée lors de la demande # d'exécution de la classe/module if __name__ == "__main__": # Filtres à trouver faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') eyeCascade = cv2.CascadeClassifier('haarcascade_eye.xml') # Ouverture de la Webcam cap = cv2.VideoCapture(WEBCAM_NUMBER) # On acquière tout le temps while True: # Capture d'une image ret, frame = cap.read() # Copie de l'image acquise frameCopy = frame.copy() # Transforme en niveaux de gris gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # Trouve les visages faces = faceCascade.detectMultiScale(gray, 1.3, 5) # Dessine un rectangle sur chaque visage et oeil trouvés for (x, y, w, h) in faces: cv2.rectangle(frameCopy, (x, y), (x+w, y+h), (255, 0, 0), 2) roiGray = gray[y:y+h, x:x+w] roiColor = frameCopy[y:y+h, x:x+w] # Trouve les yeux eyes = eyeCascade.detectMultiScale(roiGray) for (ex, ey, ew, eh) in eyes: cv2.rectangle(roiColor, (ex,ey), (ex+ew, ey+eh), (0, 255, 0), 2) # Affiche le résultat cv2.imshow(__project__, np.hstack([frame, frameCopy])) # Touche Esc pour quitter ! key = cv2.waitKey(1) & 0xFF if key == 27: break # Libère les ressources cap.release() cv2.destroyAllWindows()