人脸识别过程一般分为以下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];
时间: 2024-10-11 04:53:26