首页 > 代码库 > <图形图像,动画,多媒体> 读书笔记 --- 图像处理之人脸识别

<图形图像,动画,多媒体> 读书笔记 --- 图像处理之人脸识别

人脸识别过程一般分为以下3个步骤:

1.首先建立人脸的面纹数据库.可以通过照相机或摄像机采集人脸的面相图片,将这些面相图片生成面纹编码保存到数据库中.

2.获取当前人脸面相图片.即通过照相机或摄像机采集人脸的面相图片,将当前的面相文件生成面纹编码

3.用当前的面纹编码与数据库中的面纹编码进行对比


在iOS5之后提供人脸识别的API,通过提供的CIDetector类可以进行人脸特征识别,CIDetector是CoreImage框架中的一个特征识别滤镜,CIDetector主要用于人脸特征识别.通过它还可以获得眼睛和嘴的特征信息.但是CIDetector并不包括面纹编码提取,面纹编码处理还需要更为复杂的算法处理.也就是说使用CIDetector类可以找到一张图片中的人脸,但这张脸是谁,CIDetector无法判断,这需要有一个面纹数据库,把当前人脸提取面纹编码然后与数据库进行对比.(openCV,FACE.COM)


CIContext *context = [CIContext contextWithOptions:nil];
    
    UIImage *imageInput = [_inputImageView image];
    CIImage *image = [CIImage imageWithCGImage:imageInput.CGImage];
    
    //设置识别参数
    NSDictionary *param = [NSDictionary dictionaryWithObject:CIDetectorAccuracyHigh
                                                      forKey:CIDetectorAccuracy];
    //声明一个CIDetector,并设定识别类型
    CIDetector* faceDetector = [CIDetector detectorOfType:CIDetectorTypeFace
                                                  context:context options:param];
    
    //取得识别结果
    NSArray *detectResult = [faceDetector featuresInImage:image];
    
    UIView *resultView = [[UIView alloc] initWithFrame:_inputImageView.frame];
    [self.view addSubview:resultView];
    
    
    for(CIFaceFeature* faceFeature in detectResult) {
        
        //脸部
        UIView* faceView = [[UIView alloc] initWithFrame:faceFeature.bounds];
        faceView.layer.borderWidth = 1;
        faceView.layer.borderColor = [UIColor orangeColor].CGColor;
        [resultView addSubview:faceView];
        [faceView release];
        
        //左眼
        if (faceFeature.hasLeftEyePosition) {
            
        }
        
        //右眼
        if (faceFeature.hasRightEyePosition) {
            
        }
        
        //嘴巴
        if (faceFeature.hasMouthPosition) {
           
        }
        
    }
    
    [resultView setTransform:CGAffineTransformMakeScale(1, -1)];
    
    [resultView release];


<图形图像,动画,多媒体> 读书笔记 --- 图像处理之人脸识别