Outils pour utilisateurs

Outils du site


diy:projets:faceswap

Ceci est une ancienne révision du document !


Présentation du projet

Le but de se projet est de pouvoir intervertir les différents visages sur des photos.

Outils requis et Librairies Python

Ce programme se base sur la détection de visages et utilise donc la même fonction que celle-ci pour pouvoir détecter les faces à échanger

Il utilise aussi les mêmes librairies que la détection de visages à savoir:

import cv2
import numpy as np
import sys
import os

Explication du programme

Comme écrit ci-dessus le Faceswap utilise la fonction detectVisage pour détecter les visages à échanger.

Une fois que ceci sont détecter on vérifie s'il y a au moins deux visages sinon on quitte le programme.

#Verification du nombre de visage
if len(vis) < 2:
  print("Le nombre de visage n'est pas suffisant pour executer le FaceSwap")

Ensuite, on enregistre dans des fichiers temporaires au formats images tous les visages obtenus.

#Creation d'image temporaire pour l'execution du FaceSwap
i = 0 
for x,y,w,h in vis:
  cv2.imwrite("temp"+str(i)+".jpg",img[y:h,x:w])
i=i+1

Puis en décalant l'indice, on parcoure une nouvelle fois le tableau de visage, on récupère le visage temporaire correspondant à l'indice, on redimensionne celui-ci à la taille du visage que l'on veut remplacer et on remplace le visage actuel.

#Remplacement des visages present sur l'image par les autres visages enregistres dans des fichier temp
i = 1;
for x,y,w,h in vis:
  rep=cv2.imread("temp"+str(i)+".jpg", cv2.IMREAD_COLOR)
  repR = cv2.resize(rep,img[y:h,x:w].shape[:2])
  img[y:h,x:w] = repR
  i=i+1
  if i == len(vis):
    i = 0

Et enfin, il ne reste plus qu'à écrire l'image résultat et à supprimer les fichiers temporaires.

cv2.imwrite("IMGRES/"+res,img)
  os.system("rm temp*.jpg")
diy/projets/faceswap.1527165532.txt.gz · Dernière modification : 2018/05/24 12:38 de spujol