我有一个使用 AVFoundation 并跟踪面部、眼睛和嘴巴位置的应用程序。我使用 CIFaceFeature 来检测这些并将它们标记在屏幕上。
有没有一种简单的方法可以使用框架来检测眨眼?
最佳答案
对于 iOS 7,是的,现在您可以使用 CoreImage 来完成。
以下是 iOS 7 Beta 2 中的 API 差异:
CoreImage
CIDetector.h
Added CIDetectorEyeBlink
Added CIDetectorSmile
iOS 7 之前:
不,目前无法使用 iOS 框架(AVFoundation 或 CoreImage)。
您可以使用 OpenCV 进行查看...但这更多的是一个研究主题,不能保证在不同情况下都能正常工作:
首先,你需要建立一个闭眼/睁眼分类器,据我所知,OpenCV中没有内置眨眼分类器,所以你需要收集足够的“闭眼”和“开眼”样本,并训练一个二元分类器。 (我建议使用主成分分析 + 支持向量机。两者都在 OpenCV 中可用)
然后在iOS中,使用CoreImage检测双眼的位置。并在眼睛中心周围切出一个方形补丁图像。补丁的大小应根据检测到的面部边界矩形进行标准化。
然后您需要将 UIImage/CIImage 转换为 OpenCV IplImage 或 CvMat 格式,并将它们输入到 OpenCV 分类器中以确定眼睛是睁开还是闭上。
最后根据睁眼、闭眼的顺序判断是否有眨眼。
(您还需要检查处理帧速率是否能够选择眨眼 Action :假设眨眼发生在 0.5 帧内...那么您将永远不会检测到它...)
这是一个难题...否则苹果早就将它们包含在框架中了。
关于objective-c - 使用 CIFaceFeature 检测前置摄像头中的眨眼,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16799148/