使用CIDetector进行实时人脸检测/跟踪

时间:2015-11-23 13:42:55

标签: ios swift image-processing real-time face-detection

我制作了一个“功能性”的面部检测应用程序。但是,问题是.featuresInImage()中的CIdetector每次调用func captureOutput()时都不会检测到面。我已经尝试设置CIDetectorAccuracyLow,但没有显着改善任何内容。

我已经尝试了我的应用程序和本机iPhone相机,后者可以检测实例中的面部,即使面部略微受阻(例如眼镜)。为什么是这样? Apple是否使用了不同的人脸检测算法?或者在发送到CIDetector之前我应该​​做些优化吗?

以下代码供进一步参考:

private var faceDetector: CIDetector?
dynamic var faceFeature: CGRect

...

func captureOutput(captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, fromConnection connection: AVCaptureConnection!) {
    // This function is called whenever a new frame is available
    let pixelBuffer: CVPixelBufferRef = CMSampleBufferGetImageBuffer(sampleBuffer)!
    let inputImage = CIImage(CVPixelBuffer: pixelBuffer)
    let features = self.faceDetector!.featuresInImage(inputImage)

    for feature in features as! [CIFaceFeature] {
        faceFeature = feature.bounds
        print("\(faceFeature)")
    }
}

更新

我已经进一步测试了我的“功能”代码,似乎有些时候我的脸部处于某个角度和大小,.featuresInImage()会以视频帧速率检测到我的脸部。

这是否意味着CIDetector工作正常但我必须对输入样本进行一些调整?让算法更容易运行吗?

0 个答案:

没有答案