2014-06-12 3 views
1

Puis-je avoir quelques idées sur la façon de transformer le visage dans une vidéo en direct en utilisant opencv? J'ai essayé Face substitution mais il est mis en œuvre en utilisant openFrameworks.Visage morphing utilisant opencv

Je voudrais implémenter la même chose en utilisant opencv. Existe-t-il d'autres méthodes disponibles dans opencv que le portage di- rectement du code de substitution Face de openFrameworks vers Opencv?

J'ai également passé par ce link, mais peu de gens ont mentionné comme face morphing is deprecated in opencv?

+0

morphing image (votre lien de blog) est complètement différent de morphing vidéo en direct - et OpenCV ne le fera jamais tout ce openFrameworks fait, c'est pourquoi votre projet github utilise à la fois – Gabor

+0

Peut-être que vous pouvez utiliser calcOpticalFlowFarneback. Voir ce lien sur youtube: https://www.youtube.com/watch?v=F4k9q-HXT7Y Aussi, voir le tutoriel opencv dense flow flow (en bas de la page): http://docs.opencv.org/trunk/ doc/py_tutorials/py_video/py_lucas_kanade/py_lucas_kanade.html. – user391339

Répondre

0

Je ne connais aucune bibliothèque qui le fait spécifiquement, mais vous pouvez bricoler quelque chose vous-même. Vous auriez besoin d'un ensemble de fiducial points commun que vous référencez dans tous les visages. Ensuite, vous voudrez utiliser ces points pour faire Delaunay triangulation dessus.

Maintenant, vous pouvez soit faire la transformation directement d'un châssis de face à l'autre, ou vous pouvez l'écrire sur un visage normalisé intermédiaire, apporter des modifications à cela et ensuite l'écrire n'importe où.

6

J'ai récemment écrit un article sur le morphing de visage en utilisant OpenCV. J'ai partagé le code en C++/Python. Vous trouverez les détails ici

http://www.learnopencv.com/face-morph-using-opencv-cpp-python/

, mais l'idée de base est la suivante.

  1. Rechercher des correspondances de point dans les deux images d'entrée.
  2. Faire une triangulation de Delaunay sur les points.
  3. La quantité de morphing est contrôlée par un paramètre alpha. Par exemple pour alpha = 0, vous obtiendrez Ted Cruz dans l'exemple ci-dessous, et pour alpha = 1. vous obtiendrez Hillary Clinton. Pour tout autre alpha, ce sera le mélange entre les deux. Utilisez alpha pour calculer l'emplacement des points dans l'image de sortie (transformée) en prenant une moyenne pondérée des deux points d'image d'entrée.
  4. Calculez la transformation affine entre chaque triangle dans les images d'entrée et l'image de destination (image modifiée).
  5. Déformer le triangle de chaque image d'entrée à l'image de sortie et mélanger les pixels en fonction de l'alpha. Faites ceci pour chaque triangle et vous obtenez l'image transformée en sortie.

Espérons que cela aide.

enter image description here