Outils pour utilisateurs

Outils du site


diy:projets:facestooof

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:facestooof [2018/05/31 13:16] – [Les fonctions] tphilibertdiy:projets:facestooof [2018/06/01 10:49] (Version actuelle) – [Outils requis] tphilibert
Ligne 2: Ligne 2:
 ====Ce que ce programme fait==== ====Ce que ce programme fait====
 **facesToX** est un programme permettant de changer chaque instance de visage dans une image par une autre image. "L'image" en entrée peut être donnée, prise, ou du temps réel sur n'importe quelle caméra supportant la librairie OpenCV.\\ **facesToX** est un programme permettant de changer chaque instance de visage dans une image par une autre image. "L'image" en entrée peut être donnée, prise, ou du temps réel sur n'importe quelle caméra supportant la librairie OpenCV.\\
-Ce programme est purement divertissant et ne sert à rien d'autre.\\+Ce programme n'a pas d'autre but que de divertir.\\
 \\ \\
 Voici un exemple classique d'une exécution de ce programme:\\ Voici un exemple classique d'une exécution de ce programme:\\
 {{:diy:projets:allezlesbleus.jpg?345|Avant}} {{:diy:projets:allezlesoofs.jpg?345|Après}}\\ {{:diy:projets:allezlesbleus.jpg?345|Avant}} {{:diy:projets:allezlesoofs.jpg?345|Après}}\\
-//(Si vous vous demandez pourquoi certains visages ne sont pas pris, je vous propose de regarder la section __Problèmes et améliorations__).//\\+//(Si vous vous demandez pourquoi certains visages ne sont pas pris, je vous propose de regarder la section [[https://wiki.ensfea.fr/doku.php?id=diy:projets:facestooof#problemes_et_ameliorations|Problèmes et améliorations]]).//\\
  
 ---- ----
Ligne 30: Ligne 30:
 </code> </code>
 //ligne 133//.\\ //ligne 133//.\\
-  * N'importe quelle image peut-être l'image de base du moment qu'elle s'appelle 'oof.png'.+  * N'importe quelle image peut-être l'image de base du moment qu'elle s'appelle ''oof.png''.
  
 ====Librairies==== ====Librairies====
Ligne 47: Ligne 47:
 ====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_facetox.png|}}\\+{{:diy:projets:arbre_des_arguments.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 35 à 126.//\\ Si cela vous intéresse, le contrôle s'étend //lignes 35 à 126.//\\
Ligne 101: Ligne 101:
 ====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:
-  - Ne pas détecter pas de visage et ne cherchera donc pas à détecter d'yeux. +  - Ne pas détecter pas de visage ou en détecter trop. 
-  - Détecter un visage mais ne pas détecter d'yeux, pas assez... ou trop. +  - Ne pas substituer le visage même s'il l'a détecté.
-  - Ne pas afficher de flash lumineux même s'il détecte un visage et des yeux+
  
 ====Solutions possibles et améliorations==== ====Solutions possibles et améliorations====
-En ce qui concerne les problèmes de détection (1 & 2), il suffirait de posséder des //classifiers// mieux entraînés, ou bien de faire le traitement (''detectMultiScale'') avec plusieurs //classifiers// et compiler les résultats dans une liste sans doublon.\\ +En ce qui concerne les problèmes de détection (1), il suffirait d'utiliser un //classifier// mieux entraîné, ou bien de faire le traitement (''detectMultiScale'') avec plusieurs //classifiers// et compiler les résultats dans une liste sans doublon.\\ 
-Faire tourner plusieurs //classifiers// par image porterait un sacré coup sur le temps réel, mais est envisageable pour l'image fixe.\\+Faire tourner plusieurs //classifiers// par image porterait un certain coup sur le temps réel, mais est envisageable pour l'image fixe.\\
 \\ \\
-Concernant l'absence d'affichage malgré détection (3), il s'agit d'un compromis.\\+Concernant l'absence d'affichage malgré détection (2), il s'agit d'un compromis.\\
 Vous vous souvenez du traitement coincé dans un //''try ... catch''//? C'est de ça qu'il s'agit. Cela provient de "l'explosion" du **ROI** qui se fait sans contrôle de valeur aucun.\\ Vous vous souvenez du traitement coincé dans un //''try ... catch''//? C'est de ça qu'il s'agit. Cela provient de "l'explosion" du **ROI** qui se fait sans contrôle de valeur aucun.\\
 Une solution serait d'avoir un traitement plus rigoureux concernant les valeurs maximales de **l'image de départ**, définir une limite à ne pas franchir et ne superposer qu'une portion du flash lumineux d'une limite vers la fin, du début jusqu'à une limite, ou même d'une limite jusqu'à une limite.\\ Une solution serait d'avoir un traitement plus rigoureux concernant les valeurs maximales de **l'image de départ**, définir une limite à ne pas franchir et ne superposer qu'une portion du flash lumineux d'une limite vers la fin, du début jusqu'à une limite, ou même d'une limite jusqu'à une limite.\\
 Cette fois-ci, on peut considérer que cela n’entacherait pas le temps réel car il s'agit d'opérations de tests, peu coûteuses. Seulement, par soucis de temps, cette solution n'a pas été réalisée.\\ Cette fois-ci, on peut considérer que cela n’entacherait pas le temps réel car il s'agit d'opérations de tests, peu coûteuses. Seulement, par soucis de temps, cette solution n'a pas été réalisée.\\
 \\ \\
-Enfin, vis à vis des améliorations possibles, j'ai surtout en tête des améliorations de performance pour le temps réel sur une machine moins puissante (RaspBerry par exemple). Une amélioration évidente serait de paralléliser le programme, puisque la fonction s'applique indépendamment à chaque œil de chaque visage.+Enfin, vis à vis des améliorations possibles, j'ai surtout en tête des améliorations de performance pour le temps réel sur une machine moins puissante (RaspBerry par exemple). Une amélioration évidente serait de paralléliser le programme, puisque la fonction s'applique indépendamment à chaque visage.
 \\ \\
 \\ \\
diy/projets/facestooof.1527772605.txt.gz · Dernière modification : 2018/05/31 13:16 de tphilibert