ios - real - Implementación del filtro facial como MSQRD/SnapChat
efectos parecidos a snapchat (3)
Estoy desarrollando el mismo tipo de aplicación. Usé la biblioteca OFxfacetracker de OpenFramework para esto. Proporciona una malla que contiene ojos, boca, borde de la cara, posición de la nariz y puntos (vértices).
Puedes usar esto
Quiero desarrollar los filtros de la cara en vivo como filtros en vivo de MSQRD / Snapchat, pero no pude averiguar cómo debo proceder si utilizo el marco de Realidad Aumentada y detecto la cara O uso la imagen del núcleo para detectar la cara y procesar en consecuencia. Por favor, avíseme si alguien tiene la idea de cómo implementar lo mismo.
Estoy probando usando Unity + OpenCV para la unidad. Ahora intentaremos cómo ofxfacetracker hace el seguimiento de gestos. Los filtros se pueden hacer usando gles shaders disponibles en la unidad, también hay muchos complementos en la tienda de activos que ayudan en el renderizado en tiempo real que usted necesita.
Yo recomendaría ir con Core Image
y CIDetector . https://developer.apple.com/library/ios/documentation/GraphicsImaging/Conceptual/CoreImaging/ci_detect_faces/ci_detect_faces.html Ha estado disponible desde iOS 5 y tiene una gran documentación.
Crear un ejemplo de detector de rostros:
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
Esto es lo que hace el código:
1.- Crea un contexto; en este ejemplo, un contexto para iOS. Puede usar cualquiera de las funciones de creación de contexto descritas en Procesamiento de imágenes). También tiene la opción de suministrar nil en lugar de un contexto cuando crea el detector.)
2.- Crea un diccionario de opciones para especificar la precisión del detector. Puede especificar baja o alta precisión. La baja precisión (CIDetectorAccuracyLow) es rápida; la alta precisión, que se muestra en este ejemplo, es minuciosa pero más lenta.
3.- Crea un detector para caras. El único tipo de detector que puedes crear es uno para caras humanas.
4.- Configura un diccionario de opciones para encontrar rostros. Es importante dejar que Core Image conozca la orientación de la imagen para que el detector sepa dónde puede encontrar las caras verticales. La mayoría de las veces leerá la orientación de la imagen desde la imagen misma y luego proporcionará ese valor al diccionario de opciones.
5.- Utiliza el detector para encontrar características en una imagen. La imagen que proporciones debe ser un objeto CIImage. Core Image devuelve una matriz de objetos CIFeature, cada uno de los cuales representa una cara en la imagen.
Aquí hay algunos proyectos abiertos que podrían ayudarlo a comenzar con CoreImage
u otras tecnologías como GPUImage
o OpenCV
1 https://github.com/aaronabentheuer/AAFaceDetection (CIDetector - Swift)
2 GPUImage (Objective-C)
3 https://github.com/jeroentrappers/FaceDetectionPOC (Objective-C: tiene un código obsoleto para iOS9)
4 https://github.com/kairosinc/Kairos-SDK-iOS (Objective-C)
5 https://github.com/macmade/FaceDetect (OpenCV)