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

标签 objective-c iphone cocoa-touch avfoundation

我有一个使用 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/

相关文章:

ios - 使用核心数据中的日期获取记录

ios - 外部继承重复符号错误,这是怎么回事?

iphone - XCode 样板代码困惑,为什么要添加多次?

ios - 带有 UIVisualEffectView 的奇怪模糊伪像

ios - 如果不在主线程上,NSAttributedString initWithData 和 NSHTMLTextDocumentType 会崩溃

iphone - 设置扑克牌值(value)

iphone - 有没有办法在没有的情况下测试 Android、iPhone 推送通知?

ios - 在 iOS 7 上使用 AVSpeechSynthesizer 但保留对 iOS 6 的兼容性

iphone - 在具有分发配置文件的设备上运行时应用程序崩溃

ios - 统一UIViewController "became frontmost"检测?