面部过滤器实现,如MSQRD/SnapChat

Man*_*wal 44 augmented-reality ios snapchat

我想开发实时面部过滤器作为MSQRD/Snapchat实时过滤器,但是如果我使用增强现实框架并检测面部或使用核心图像来检测面部和相应处理,我无法知道如何继续.如果有人知道如何实现这一点,请告诉我?

Pau*_*bre 21

我建议Core ImageCIDetector一起.https://developer.apple.com/library/ios/documentation/GraphicsImaging/Conceptual/CoreImaging/ci_detect_faces/ci_detect_faces.html它自iOS 5开始提供,并且有很好的文档.

创建面部检测器示例:

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
Run Code Online (Sandbox Code Playgroud)

这是代码的作用:

1.-创造一个背景; 在此示例中,iOS的上下文.您可以使用处理图像中描述的任何上下文创建功能.)您还可以选择在创建检测器时提供nil而不是上下文.)

2.-创建选项字典以指定检测器的准确度.您可以指定低精度或高精度.精度低(CIDetectorAccuracyLow)快; 如本例所示,高精度是彻底但较慢的.

3.-为面部创建检测器.您可以创建的唯一类型的探测器是人脸.

4.-设置用于查找面部的选项字典.让Core Image了解图像方向非常重要,这样探测器就能知道它可以在哪里找到直立面.大多数情况下,您将从图像本身读取图像方向,然后将该值提供给选项字典.

5.-使用检测器查找图像中的特征.您提供的图像必须是CIImage对象.Core Image返回一个CIFeature对象数组,每个对象代表图像中的一个面.

这里有一些开放的项目,可以帮助你开始CoreImage或其他技术作为GPUImageOpenCV

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

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

3 https://github.com/jeroentrappers/FaceDetectionPOC(Objective-C:它已经弃用了iOS9的代码)

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

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

  • 嗨,我很好奇.你能告诉我他们在检测到面部后如何生成面具吗?例如,有一个使用老虎或豹子过滤器的应用程序.他们如何在3D空间中创建该过滤器.这不仅仅是一个形象.它在3D空间.这怎么会在iOS上发生?他们如何创造这样的资源我对AR并不太了解,所以很想知道它. (6认同)