我的应用程序能够存储密码。但这些都是重要的密码,所以我不希望用户被黑客入侵。我想能够使用面部识别,而不是回答安全问题或输入密码。我对最后两个选项很好,只是停留在面部识别上。
我已将视图设置为完整的相机视图。
如何执行面部识别,是否有 API 或一些示例代码?我怎样才能确定它是我看到的同一张脸?
最后一件事,举起照片会认出人脸吗?
我的应用程序能够存储密码。但这些都是重要的密码,所以我不希望用户被黑客入侵。我想能够使用面部识别,而不是回答安全问题或输入密码。我对最后两个选项很好,只是停留在面部识别上。
我已将视图设置为完整的相机视图。
如何执行面部识别,是否有 API 或一些示例代码?我怎样才能确定它是我看到的同一张脸?
最后一件事,举起照片会认出人脸吗?
您可以使用 face.com API 并将照片发送给他们以进行识别。我相信他们从 Facebook 提取数据用于面部识别,因此您可能需要您的用户连接到 Facebook。自己查看文档。
全面披露:face.com 曾经给过我一件 T 恤。
是的,举起一张照片就能认出这张脸。
人脸识别存储是个坏主意 | 天天要闻 恢复任何类型的重要数据……</p>
即使你有最好的识别算法,一张简单的图片也能打破你的安全!
但是……回答你的问题,Apple 已经发布了 iOS 6 的人脸识别 API……对于较旧的 iOS,你可能必须创建自己的算法。
面部识别算法通常基于眼睛、眉毛、鼻点和嘴巴的距离。
我最近完成了这个练习,如果你想使用 Apple 框架提供的基本功能,你可以使用 CIDetector 类型为 CIDetectorTypeFace,然后遍历返回的 CIFaceFeatures 数组。我创建了一个名为 Features 的结构来存储眼睛和嘴巴的位置:
CIDetector* detector = [CIDetector detectorOfType:CIDetectorTypeFace
context:nil options: [NSDictionary dictionaryWithObject:CIDetectorAccuracyHigh forKey:CIDetectorAccuracy]];
NSArray* features = [detector featuresInImage:image];
Features *face = [[Features alloc] init]; //simple struct with 3 face points
for( CIFaceFeature* faceFeature in features)
{
//use _faceView to compare view of 2nd image as one will have to be scaled to the others size
_faceView = [[UIView alloc] initWithFrame:faceFeature.bounds];
if(faceFeature.hasLeftEyePosition)
{
face.leftEye = faceFeature.leftEyePosition;
// do the same for face.rightEye, and face.Mouth
.
.
.
获得基本面的坐标后,您可以比较眼睛和嘴巴之间的距离并确定匹配的百分比。您可以添加眨眼检测以确保它是一个人而不是复制的图像。但这是另一个线程的主题