Outils pour utilisateurs

Outils du site


diy:projets:motiondetection

Ceci est une ancienne révision du document !


Motion Detection

(En construction)

Note: Ce code a été lancé sous python 2.7.6 avec openCV 2.4

Programme

Ce programme va permettre de capturer une scène à l'aide d'une caméra et de détecter chaque objets en mouvement dans celle ci, ainsi que la couleur dominante dans ces objets, et de les encadrer.

L'intégralité du code se trouve ici

On a donc le début de code suivant:

capture = cv2.VideoCapture(0)
prevFrame = None

Dans un premier temps, on capture la vidéo du device. Puis on créé une variable prevFrame qu'on initialise à None, celle ci va nous servir plus tard a faire la différence entre l'image actuelle et l'image précédente, pour voir si il y a eu du mouvement.

Nous arrivons ensuite dans l'essentielle du code, la boucle While, ici nous lisons chaque image une par une, si l'image n'est pas lu correctement dans le buffer, alors on quitte la boucle. Cela nous donne :

while True:
    (grabbed,frame) = capture.read()
    if not grabbed:
        break

Flou Gaussien

On récupère l'image en cour qu'on transforme en niveau de gris puis on lui applique un flou gaussien pour atténuer le bruit, sans se flou on repérerez par la suite tout les bruits comme étant du mouvement. Appliquer un flou gaussien est donc indispensable pour la suite du programme.

Cela ce fait grace au code suivant et on obtient l'image ci dessous:

gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray,(25,25), 0)

Flou Gaussien Enfin, si cette image est la première, alors la variable prevFrame prend la valeur de cette image:

if prevFrame is None:
        prevFrame = gray

Seuillage

Contours et Masque

diy/projets/motiondetection.1527163656.txt.gz · Dernière modification : 2018/05/24 12:07 de ecausse