iOS之使用CoreImage进行人脸识别
2018-02-27 11:12
585 查看
参考文章
主要的图像处理函数
主要的图像处理函数
#pragma mark - 识别人脸 - (void)faceDetectWithImage:(UIImage *)image { for (UIView *view in _imageView.subviews) { [view removeFromSuperview]; } // 图像识别能力:可以在CIDetectorAccuracyHigh(较强的处理能力)与CIDetectorAccuracyLow(较弱的处理能力)中选择,因为想让准确度高一些在这里选择CIDetectorAccuracyHigh NSDictionary *opts = [NSDictionary dictionaryWithObject: CIDetectorAccuracyHigh forKey:CIDetectorAccuracy]; // 将图像转换为CIImage CIImage *faceImage = [CIImage imageWithCGImage:image.CGImage]; CIDetector *faceDetector=[CIDetector detectorOfType:CIDetectorTypeFace context:nil options:opts]; // 识别出人脸数组 NSArray *features = [faceDetector featuresInImage:faceImage]; // 得到图片的尺寸 CGSize inputImageSize = [faceImage extent].size; //将image沿y轴对称 CGAffineTransform transform = CGAffineTransformScale(CGAffineTransformIdentity, 1, -1); //将图片上移 transform = CGAffineTransformTranslate(transform, 0, -inputImageSize.height); // 取出所有人脸 for (CIFaceFeature *faceFeature in features){ //获取人脸的frame CGRect faceViewBounds = CGRectApplyAffineTransform(faceFeature.bounds, transform); CGSize viewSize = _imageView.bounds.size; CGFloat scale = MIN(viewSize.width / inputImageSize.width, viewSize.height / inputImageSize.height); CGFloat offsetX = (viewSize.width - inputImageSize.width * scale) / 2; CGFloat offsetY = (viewSize.height - inputImageSize.height * scale) / 2; // 缩放 CGAffineTransform scaleTransform = CGAffineTransformMakeScale(scale, scale); // 修正 faceViewBounds = CGRectApplyAffineTransform(faceViewBounds,scaleTransform); faceViewBounds.origin.x += offsetX; faceViewBounds.origin.y += offsetY; //描绘人脸区域 UIView* faceView = [[UIView alloc] initWithFrame:faceViewBounds]; faceView.layer.borderWidth = 2; faceView.layer.borderColor = [[UIColor redColor] CGColor]; [_imageView addSubview:faceView]; // 判断是否有左眼位置 if(faceFeature.hasLeftEyePosition){} // 判断是否有右眼位置 if(faceFeature.hasRightEyePosition){} // 判断是否有嘴位置 if(faceFeature.hasMouthPosition){} } self.label.text = [NSString stringWithFormat:@"识别出了%ld张脸", features.count]; }
相关文章推荐
- iOS之使用CoreImage进行人脸识别
- 使用CoreImage进行人脸识别
- IOS_使用coreImage实现图片中的人脸识别
- java调用dll进行人脸识别(JNI的使用)
- 怎样使用OpenCV进行人脸识别
- java调用dll进行人脸识别(JNI的使用)
- 怎样使用OpenCV进行人脸识别
- OpenCV 使用FaceRecognizer类来进行人脸识别
- 使用ASM进行人脸相关识别的预处理
- Java使用OpenCV进行人脸识别
- 用CoreImage实现人脸识别_iOS
- 使用Haar特征进行人脸识别
- 怎样使用OpenCV进行人脸识别
- 使用ASM进行人脸相关识别的预处理
- ROS使用笔记本自带USB摄像头运行pi_face_tracker,进行人脸识别
- 怎样使用OpenCV进行人脸识别 [停止更新]
- opencv3.0使用Eigen方法进行人脸识别的方法
- 使用OpenCV进行人脸识别的三种算法(官方网翻译)
- 怎样使用OpenCV进行人脸识别
- 怎样使用OpenCV进行人脸识别