Outils pour utilisateurs

Outils du site


diy:projets:motiondetection

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Dernière révisionLes deux révisions suivantes
diy:projets:motiondetection [2018/05/28 08:28] – [Programme] ecaussediy:projets:motiondetection [2018/05/28 08:41] – [Contours et Masque] ecausse
Ligne 30: Ligne 30:
  
 ==== Flou Gaussien ==== ==== 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.+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 ce flou on repérerait 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:+Cela ce fait grâce au code suivant et on obtient l'image ci dessous:
 <code python> <code python>
 gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
Ligne 44: Ligne 44:
 </code> </code>
 ==== Seuillage ==== ==== Seuillage ====
-Après avoir obtenu l'image avec le flou gaussien, on fait la différence absolue entre l'image en cours et l'image précédente, cela nous permet de voir les pixels uniquement en mouvement. Ensuite on fait un seuillage binaire sur cette nouvelle image et tout les pixels qui on un certain niveau de gris sont placé à 255. Ici on choisi 7 pour pouvoir repérer même les petit mouvement. Puis on dilate cette image pour avoir bien tout l'objet si possible en mouvement (des fois c'est un échec...); et à l'aide du code suivant on obtient l'image ci dessous:+Après avoir obtenu l'image avec le flou gaussien, on fait la différence absolue entre l'image en cours et l'image précédente, cela nous permets de voir les pixels uniquement en mouvement. Ensuite on fait un seuillage binaire sur cette nouvelle image et tout les pixels qui on un certain niveau de gris sont placés à 255. Ici on choisi 7 pour pouvoir repérer même les petits mouvements. Puis on dilate cette image pour avoir bien tout l'objet si possible en mouvement (des fois c'est un échec...); et à l'aide du code suivant on obtient l'image ci dessous:
 <code python> <code python>
 frameDelta = cv2.absdiff(prevFrame,gray) frameDelta = cv2.absdiff(prevFrame,gray)
Ligne 54: Ligne 54:
  
 ==== Contours et Masque ==== ==== Contours et Masque ====
-Une fois que tout cela est fait, on cherche les contours des objets de l'image dilaté et on créé un masque qui va nous servir encadrer l'objet de la couleur de celui ci:+Une fois que tout cela est fait, on cherche les contours des objets de l'image dilaté et on crée un masque qui va nous servir à encadrer l'objet de la couleur de celui ci:
 <code python> <code python>
 (img,contr,hrchy) = cv2.findContours(thresh.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) (img,contr,hrchy) = cv2.findContours(thresh.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
 mask = np.zeros(frame.shape[:2],np.uint8) mask = np.zeros(frame.shape[:2],np.uint8)
 </code> </code>
-Pour chaque contours trouver:+Pour chaque contours trouvés:
  
--Si c'est un contours trop petit (valeur fixé) on l'ignore.+-Si c'est un contours trop petit (valeur fixé)on l'ignore.
  
--Sinon on crée on rectangle a partir à partir de ce contour, et un masque de la taille du rectangle qui va nous permettre d'obtenir la couleur de l'objet. Pour avoir la couleur de l'objet, on récupere la couleur du pixel du milieu du rectangle, on supose qu'on est dans le cas ou l'objet a une couleur uniforme.+-Sinonon crée on rectangle à partir de ce contour, et un masque de la taille du rectangle qui va nous permettre d'obtenir la couleur de l'objet. Pour avoir la couleur de l'objet, on récupère la couleur du pixel du milieu du rectangle, on suppose qu'on est dans le cas ou l'objet a une couleur uniforme.
  
-Le rectangle prend ensuite la couleur de l'objet et les nuance de bleu,vert,rouge sont affiché sur le cotté du rectangle. Tout cela se fait avec le code suivant:+Le rectangle prend ensuite la couleur de l'objet et les nuances de bleu,vert,rouge sont affichés sur le coté du rectangle. Tout cela se fait avec le code suivant:
 <code python> <code python>
     for c in contr:     for c in contr:
diy/projets/motiondetection.txt · Dernière modification : 2018/05/28 08:44 de ecausse