Outils pour utilisateurs

Outils du site


diy:projets:helleyes

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
diy:projets:helleyes [2018/05/31 11:44] – [Ce que ce programme fait] tphilibertdiy:projets:helleyes [2018/05/31 14:26] (Version actuelle) – [Outils requis] tphilibert
Ligne 6: Ligne 6:
 \\ \\
 Exemple d'exécution de ce programme:\\ Exemple d'exécution de ce programme:\\
-{{:diy:projets:barack-obama.jpg?290|Avant}} {{:diy:projets:hell_eyes.jpg?290|Après}}+{{:diy:projets:barack-obama.jpg?345|Avant}} {{:diy:projets:hell_eyes.jpg?345|Après}}
 ---- ----
  
Ligne 17: Ligne 17:
   * Un classifier entraîné dans la détection du visage, comme [[https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml|celui-ci]].   * Un classifier entraîné dans la détection du visage, comme [[https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml|celui-ci]].
   * Un classifier entraîné dans la détection d’œil, comme [[https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_eye.xml|celui-là]].\\   * Un classifier entraîné dans la détection d’œil, comme [[https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_eye.xml|celui-là]].\\
-  * Ce magnifique [[https://github.com/JsuisUnLama/BE-2018---PHILIBERT-Thomas/blob/master/images/begoneThotEyes.png|flash lumineux de la mort]]+  * Ce magnifique [[https://github.com/JsuisUnLama/BE-2018---PHILIBERT-Thomas/blob/master/images/begoneThotEyes.png|flash lumineux de la mort qui tue]].
 Le tout à placer dans le même dossier que celui du programme.\\ Le tout à placer dans le même dossier que celui du programme.\\
 \\ \\
Ligne 36: Ligne 36:
 </code> </code>
 //lignes 1 à 3// //lignes 1 à 3//
-  * ''cv2'' référence la librairie [[https://opencv.org/|OpenCV]] permettant de nombreuses opérations sur les images en Python et C++\\+  * ''cv2'' référence la librairie [[https://opencv.org/|OpenCV]] (version 3.4.1) permettant de nombreuses opérations sur les images en Python et C++\\
   * ''sys'' référence la librairie [[https://docs.python.org/3/library/sys.html|sys]] pour la gestion des paramètres en Python.   * ''sys'' référence la librairie [[https://docs.python.org/3/library/sys.html|sys]] pour la gestion des paramètres en Python.
  
Ligne 43: Ligne 43:
 ====Le contrôle d'erreur==== ====Le contrôle d'erreur====
 Il s'agit d'un pan entier de code contrôlant l'arbre d'argument suivant:\\ Il s'agit d'un pan entier de code contrôlant l'arbre d'argument suivant:\\
-{{:diy:projets:arbre_des_arguments_hell_eyes.png|}}\\+{{ :diy:projets:arbre_des_arguments_hell_eyes_1_.png |}}
 Ce n'est pas nécessairement excitant mais ça permet au programme de détecter différentes erreurs, de s'arrêter dans de meilleures conditions et en indiquant l'erreur en question. Ce n'est pas nécessairement excitant mais ça permet au programme de détecter différentes erreurs, de s'arrêter dans de meilleures conditions et en indiquant l'erreur en question.
-Si cela vous intéresse, le contrôle s'étend //lignes 55 à 112//\\+Si cela vous intéresse, le contrôle s'étend //lignes 55 à 112//.\\
  
 ====Les fonctions==== ====Les fonctions====
 Voilà qui est déjà un peu plus intéressant. Ce programme contient deux fonctions: Voilà qui est déjà un peu plus intéressant. Ce programme contient deux fonctions:
-  * **hellEyes**(//image à traiter, flash rouge lumineux des enfers//) +  * **hellEyes**(//image à traiter, flash rouge lumineux des enfers//). 
-  * **addHellEyes**(//image à traiter, flash rouge lumineux des enfers, axe, ordonnée, largeur, hauteur//)+  * **addHellEyes**(//image à traiter, flash rouge lumineux des enfers, axe, ordonnée, largeur, hauteur//).
  
 ===hellEyes=== ===hellEyes===
Ligne 71: Ligne 71:
  return img  return img
 </code> </code>
-//lignes 9 à 22//\\+//lignes 9 à 22//.\\
 \\ \\
 On prend l'image ''img'', on la transforme en niveaux de gris, on applique le //face classifier// dessus grâce à ''detectMultiScale''. Chaque visage ainsi détecté rejoins la liste ''faces'' sous la forme d'un tuple de 4 valeurs:  On prend l'image ''img'', on la transforme en niveaux de gris, on applique le //face classifier// dessus grâce à ''detectMultiScale''. Chaque visage ainsi détecté rejoins la liste ''faces'' sous la forme d'un tuple de 4 valeurs: 
-  * axe au point en haut à gauche du visage dans le référentiel du gris de **l'image de départ** +  * axe au point en haut à gauche du visage dans le référentiel du gris de **l'image de départ**. 
-  * ordonnée au point en haut à gauche du visage dans le référentiel du gris de **l'image de départ** +  * ordonnée au point en haut à gauche du visage dans le référentiel du gris de **l'image de départ**. 
-  * Largeur du visage +  * Largeur du visage. 
-  * Hauteur du visage\\+  * Hauteur du visage.\\
 Pour chaque visage, on définit une sous image (ou **ROI**) à partir de celle en niveau de gris, de laquelle on applique le //eye classifier// toujours avec ''detectMultiScale''. Chaque œil ainsi détecté rejoins la liste ''eyes'' sous la forme d'un autre tuple de 4 points similaire à celui des visages, excepté qu'ici **l'image de départ** est le ROI du visage en traitement.\\ Pour chaque visage, on définit une sous image (ou **ROI**) à partir de celle en niveau de gris, de laquelle on applique le //eye classifier// toujours avec ''detectMultiScale''. Chaque œil ainsi détecté rejoins la liste ''eyes'' sous la forme d'un autre tuple de 4 points similaire à celui des visages, excepté qu'ici **l'image de départ** est le ROI du visage en traitement.\\
 Enfin pour chaque œil on applique la fonction ''addHellEyes'' en passant **l'image de départ**, le flash rouge, la position (x,y) de l’œil dans le référentiel de **l'image de départ** ainsi que la largeur et la hauteur de l’œil qu'on traite .\\ Enfin pour chaque œil on applique la fonction ''addHellEyes'' en passant **l'image de départ**, le flash rouge, la position (x,y) de l’œil dans le référentiel de **l'image de départ** ainsi que la largeur et la hauteur de l’œil qu'on traite .\\
Ligne 109: Ligne 109:
  return img  return img
 </code> </code>
-//lignes 26 à 51//\\+//lignes 26 à 51//.\\
 \\ \\
 La partie ''#Data'' contient les données paramètres de "d'explosion" du **ROI** et de centrage, s'ajoutant aux calculs suivant pour center le flash sur les yeux et pour que le étendre le flash lumineux après son le ''resize''.\\ La partie ''#Data'' contient les données paramètres de "d'explosion" du **ROI** et de centrage, s'ajoutant aux calculs suivant pour center le flash sur les yeux et pour que le étendre le flash lumineux après son le ''resize''.\\
 La partie ''#Preprocess'' contient le calcul de la taille du nouvel **ROI**, le changement de taille du flash lumineux, le calcul des nouvelles valeurs de départ et de fin dans **l'image de départ** et le calcul de la valeur de transparence.\\ La partie ''#Preprocess'' contient le calcul de la taille du nouvel **ROI**, le changement de taille du flash lumineux, le calcul des nouvelles valeurs de départ et de fin dans **l'image de départ** et le calcul de la valeur de transparence.\\
-La partie ''#Treatment'' pose //dans un ''try ... catch'' (voir problèmes et améliorations)// le flash lumineux sur l'image de départ pixel par pixel avant de la renvoyer.\\ +La partie ''#Treatment'' pose //dans un ''try ... catch'' (voir [[https://wiki.ensfea.fr/doku.php?id=diy:projets:helleyes#problemes_et_ameliorations|Problèmes et améliorations]])// le flash lumineux sur l'image de départ pixel par pixel avant de la renvoyer.\\ 
-Et voilà, vous êtes un <del>contrôleur des impôts</del> démon ! Il ne reste plus qu'à l'afficher+Et voilà, vous êtes un <del>contrôleur des impôts</del> démon ! Il ne reste plus qu'à l'afficher.
  
 ====Le main==== ====Le main====
 Il s'agit là aussi d'un  bout de code pas très passionnant. Il s'étend //lignes 115 jusqu'à la fin// et se résume à: Il s'agit là aussi d'un  bout de code pas très passionnant. Il s'étend //lignes 115 jusqu'à la fin// et se résume à:
-  * Chargement des //classifiers// +  * Chargement des //classifiers//. 
-  * Chargement du flash lumineux+  * Chargement du flash lumineux.
   * Débuter le traitement selon la méthode choisie, i.e:   * Débuter le traitement selon la méthode choisie, i.e:
-    * Soit en appliquant la fonction puis en écrivant le résultat si le traitement est sur image fixe +    * Soit en appliquant la fonction puis en écrivant le résultat si le traitement est sur image fixe. 
-    * Soit en appliquant la fonction en continue et en l'affichant le résultat en temps réel jusqu'à pression de la touche ''Q''  +    * Soit en appliquant la fonction en continue et en l'affichant le résultat en temps réel jusqu'à pression de la touche ''Q''. 
-  * Quitter+  * Quitter.
  
 ---- ----
-=====Problèmes et améliorations=====+======Problèmes et améliorations======
 ====Problèmes==== ====Problèmes====
 Même si la scène ou l'image comporte un visage, le programme peut: Même si la scène ou l'image comporte un visage, le programme peut:
diy/projets/helleyes.1527767078.txt.gz · Dernière modification : 2018/05/31 11:44 de tphilibert