iOS人脸识别技术

来源:互联网 发布:会计理解 知乎 编辑:程序博客网 时间:2024/06/09 16:47

http://blog.chukong-inc.com/index.php/2012/03/04/ios人脸识别技术/




formats

iOS人脸识别技术

Published on 2012 年 3 月 4 日, by linhao in iOS技术.

苹果在iOS 5.0中加入了CoreImage框架,让图形处理变得非常的方便。这是一个很强悍的框架,不仅支持使用滤镜来对静态图片甚至是视频进行实时的处理, 而且提供人脸识别技术。CoreImage使用起来非常的简单,下面通过一个Demo简单介绍下。

1) 新建项目,并加入必要的框架

  • 打开Xcode,新建一个iPhone项目
  • 加入使用Core Image要用到和Demo中用到的视频播放框架:QuartzCore.framework,CoreImage.framework,CoreVideo.framework,CoreMedia.framework,AssetsLibrary.framework,AVFoundation.framework

2) 接收摄像头传过来的图像

  • 在viewDidLoad中创建一个脸部识别器,并设置摄像头来接收图像。
Source code   
- (void)viewDidLoad { [super viewDidLoad]NSDictionary *detectorOptions = [[NSDictionary alloc] initWithObjectsAndKeys:CIDetectorAccuracyLow, CIDetectorAccuracy, nil]; faceDetector = [[CIDetector detectorOfType:CIDetectorTypeFace context:nil options:detectorOptions] retain][detectorOptions release][self setupCamera]}

3) 识别脸部图像

  • 从摄像头传来的每一帧图像中,用在上一步创建好的脸部识别器从图片中取出具有脸部特征的区域。
Source code   
- (void)drawFaceBoxesForFeatures:(NSArray *)features forVideoBox:(CGRect)clap orientation:(UIDeviceOrientation)orientation { imageOptions = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:exifOrientation] forKey:CIDetectorImageOrientation]NSArray *features = [faceDetector featuresInImage:ciImage options:imageOptions]}
  • 从CIFaceFeature类中,可以看到封装好的脸部,眼睛和嘴的位置

4) 对脸部进行处理

  • 下面我们就对脸部做个简单的处理,加一个红色的框。
  • 由于Quartz和UIKit的坐标系不同,在drawFaceBoxesForFeatures方法中,通过坐标系的转化,以及实际图像大小和显示图像Layer大小的比例,来计算出脸部在CALayer中的实际位置
  • 最后在计算出的位置和区域,加一个红色的框。

 

Demo下载地址


formats

iOS人脸识别技术

Published on 2012 年 3 月 4 日, by linhao in iOS技术.

苹果在iOS 5.0中加入了CoreImage框架,让图形处理变得非常的方便。这是一个很强悍的框架,不仅支持使用滤镜来对静态图片甚至是视频进行实时的处理, 而且提供人脸识别技术。CoreImage使用起来非常的简单,下面通过一个Demo简单介绍下。

1) 新建项目,并加入必要的框架

  • 打开Xcode,新建一个iPhone项目
  • 加入使用Core Image要用到和Demo中用到的视频播放框架:QuartzCore.framework,CoreImage.framework,CoreVideo.framework,CoreMedia.framework,AssetsLibrary.framework,AVFoundation.framework

2) 接收摄像头传过来的图像

  • 在viewDidLoad中创建一个脸部识别器,并设置摄像头来接收图像。
Source code   
- (void)viewDidLoad { [super viewDidLoad]NSDictionary *detectorOptions = [[NSDictionary alloc] initWithObjectsAndKeys:CIDetectorAccuracyLow, CIDetectorAccuracy, nil]; faceDetector = [[CIDetector detectorOfType:CIDetectorTypeFace context:nil options:detectorOptions] retain][detectorOptions release][self setupCamera]}

3) 识别脸部图像

  • 从摄像头传来的每一帧图像中,用在上一步创建好的脸部识别器从图片中取出具有脸部特征的区域。
Source code   
- (void)drawFaceBoxesForFeatures:(NSArray *)features forVideoBox:(CGRect)clap orientation:(UIDeviceOrientation)orientation { imageOptions = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:exifOrientation] forKey:CIDetectorImageOrientation]NSArray *features = [faceDetector featuresInImage:ciImage options:imageOptions]}
  • 从CIFaceFeature类中,可以看到封装好的脸部,眼睛和嘴的位置

4) 对脸部进行处理

  • 下面我们就对脸部做个简单的处理,加一个红色的框。
  • 由于Quartz和UIKit的坐标系不同,在drawFaceBoxesForFeatures方法中,通过坐标系的转化,以及实际图像大小和显示图像Layer大小的比例,来计算出脸部在CALayer中的实际位置
  • 最后在计算出的位置和区域,加一个红色的框。

 

Demo下载地址