使用CIFaceFeature检测前置摄像头中的眨眼

时间:2013-05-28 18:41:24

标签: objective-c iphone cocoa-touch avfoundation

我有一个使用AVFoundation并跟踪脸部,眼睛和嘴巴位置的应用程序。我使用CIFaceFeature检测这些并在屏幕上标记它们。

是否有一种使用框架检测眨眼的简单方法?

1 个答案:

答案 0 :(得分:1)

对于iOS 7,是的,现在你可以使用CoreImage。

以下是iOS 7 Beta 2中的API差异:

CoreImage

CIDetector.h
Added CIDetectorEyeBlink
Added CIDetectorSmile

在iOS 7之前:

不,暂时没有办法使用iOS框架(AVFoundation或CoreImage)。

你可以看一下OpenCV ......但它更像是一个研究性话题,不能保证在不同情况下都能很好地运作:

首先,您需要构建一个闭眼/开放分类器,afaik,OpenCV中没有内置眼睛眨眼分类器,因此您需要收集足够的“近距离”和“打开”样本,并训练二进制分类器。 (我建议使用主成分分析+支持向量机。两者都可以在OpenCV中使用)

然后在iOS中,使用CoreImage检测双眼的位置。并在眼睛中心周围切出方形斑块图像。应根据检测到的面边界矩形对贴片的大小进行标准化。

然后你需要将UIImage / CIImage转换为OpenCV IplImage或CvMat格式,并将它们输入OpenCV分类器以确定眼睛是打开还是关闭。

最后,根据眼睛睁开和关闭的顺序确定是否有眨眼。

(你还需要检查处理帧速率是否能够选择一个眨眼动作:假设眨眼发生在0.5帧之内......那么你永远不会发现它......)

这是一个难题......否则Apple会把它们包含在框架中。