如何识别同一张脸?

时间:2012-06-16 00:04:47

标签: objective-c ios xcode face-recognition

我的应用可以存储密码。但这些是重要的密码,因此我不希望用户被黑客入侵。我想到能够使用面部识别,而不是回答安全问题输入密码。我对最后两个选项很好,只是坚持面部识别。

我已将视图设置为完整的相机视图。

如何进行面部识别,是否有API或一些示例代码?我怎样才能确定它与我看到的是同一张脸?

最后一件事,会举起一张照片识别脸部吗?

3 个答案:

答案 0 :(得分:2)

您可以使用face.com API并向其发送照片以进行识别。我相信他们从Facebook获取数据用于面部识别,因此您可能需要您的用户进行Facebook连接。查看自己的文档。

完全披露:face.com给了我一件T恤。

是的,举起一张照片会识别出脸部。

答案 1 :(得分:1)

面部识别是一个坏主意存储|恢复任何类型的重要数据......

即使您拥有最佳识别算法,简单的图片也会破坏您的安全性!

但是......回答你的问题,Apple已经向iOS 6发布了面部识别API ......对于较旧的iOS,你可能需要创建自己的算法。

面部识别算法通常基于眼睛,眉毛,鼻尖和嘴巴距离。

答案 2 :(得分:0)

我最近经历过这个练习,如果你想使用Apple框架提供的基本功能,你可以使用类型为CIDetectorTypeFace的CIDetector,然后遍历返回的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
          .
          .
          .

在获得基准面的坐标后,您可以比较眼睛和嘴巴之间的距离,并确定匹配的百分比。您可以添加眨眼检测以确保它是一个人而不是复制的图像。但这是另一个主题的主题