44 votes

Implémentation de filtres faciaux comme MSQRD / SnapChat

Je souhaite développer les filtres de visage en direct sous la forme de filtres en direct MSQRD / Snapchat, mais je ne suis pas en mesure de savoir comment procéder. Devrais-je utiliser le cadre de réalité augmentée et détecter un visage OU utiliser une image de base pour détecter le visage et traiter en conséquence. S'il vous plaît laissez-moi savoir si quelqu'un a l'idée de mettre en œuvre la même chose?

21voto

Pau Senabre Points 2136

Je vous recommande d'aller avec Core Image et CIDetector. https://developer.apple.com/library/ios/documentation/GraphicsImaging/Conceptual/CoreImaging/ci_detect_faces/ci_detect_faces.html Il a été disponible depuis iOS 5 et il a beaucoup de documentation.

Création d'une face détecteur exemple:

CIContext *context = [CIContext contextWithOptions:nil];                    // 1
NSDictionary *opts = @{ CIDetectorAccuracy : CIDetectorAccuracyHigh };      // 2
CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeFace
                                          context:context
                                          options:opts];                    // 3

opts = @{ CIDetectorImageOrientation :
          [[myImage properties] valueForKey:kCGImagePropertyOrientation] }; // 4
NSArray *features = [detector featuresInImage:myImage options:opts];        // 5

Voici ce que fait le code:

1.- Crée un contexte; dans cet exemple, un contexte pour iOS. Vous pouvez utiliser le contexte de création des fonctions décrites dans le Traitement d'Images.) Vous avez également la possibilité de fournir néant à la place d'un contexte lorsque vous créez le détecteur.)

2.- Crée un dictionnaire de spécifier la précision du détecteur. Vous pouvez spécifier de basse ou de haute précision. Faible précision (CIDetectorAccuracyLow) est rapide, de haute précision, dans cet exemple, est complète mais plus lente.

3.- Crée un détecteur de visages. Le seul type de détecteur, vous pouvez créer est un pour les visages humains.

4.- Met en place un dictionnaire pour trouver des visages. Il est important de les laisser Core Image de connaître l'orientation d'image de sorte que le détecteur sait où on peut trouver à la verticale visages. La plupart du temps, vous aurez lu l'orientation d'image à partir de l'image elle-même, et de le proposer ensuite de la valeur pour les options de dictionnaire.

5.- Utilise le détecteur de trouver les caractéristiques d'une image. L'image que vous fournissez doit être un CIImage objet. Core Image renvoie un tableau de CIFeature objets, dont chacun représente un visage dans l'image.

Voici quelques projets qui pourraient vous aider à démarrer avec CoreImage ou à d'autres technologies comme l' GPUImage ou OpenCV

1 https://github.com/aaronabentheuer/AAFaceDetection (CIDetector - Swift)

2 https://github.com/BradLarson/GPUImage (Objective-C)

3 https://github.com/jeroentrappers/FaceDetectionPOC (Objective-C: il est déconseillé de code pour iOS9)

4 https://github.com/kairosinc/Kairos-SDK-iOS (Objective-C)

5 https://github.com/macmade/FaceDetect (OpenCV)

4voto

girish_pro Points 552

Je développe le même type d'application. J'ai utilisé la bibliothèque OFxfacetracker d'OpenFramework pour cela. Il fournit des mailles qui contiennent les yeux, la bouche, la bordure du visage, la position du nez et les points (sommets).

Vous pouvez l'utiliser.

2voto

LucasRT Points 139

Je teste en utilisant Unity + OpenCV pour l'unité. Nous allons maintenant essayer comment ofxfacetracker effectue le suivi des gestes. Les filtres peuvent être utilisés en désactivant les shaders disponibles dans l’unité. Il existe également de nombreux plug-ins dans le magasin d’actifs qui vous aident à rendre en temps réel le rendu dont vous avez besoin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X