人脸识别
来源:互联网 发布:javascript启示录云盘 编辑:程序博客网 时间:2024/06/02 10:29
#import "ViewController.h"#define imageName [NSString stringWithFormat:@"%ld", _imageTag]@interface ViewController ()@property (nonatomic,assign) NSInteger imageTag;@property (nonatomic,strong) UIImageView* imageView;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. _imageTag = 2; //自动获取本地图片的宽高 CGSize size = [UIImage imageNamed:imageName].size; _imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 20, size.width, size.height)]; _imageView.backgroundColor = [UIColor grayColor]; _imageView.image = [UIImage imageNamed:imageName]; [self.view addSubview:_imageView]; [self faceDetectWithImage:[UIImage imageNamed:imageName]];}#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){} }}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end
阅读全文
1 0
- 语音识别&人脸识别
- 【人脸识别】初识人脸识别
- 【人脸识别】初识人脸识别
- OpenCV的行人识别&人脸识别
- 图片识别之人脸识别API
- OpenCV的行人识别&人脸识别
- IOS人脸识别和二维码识别
- 人脸识别之颜色识别
- Face++ 人脸识别,身份识别集成
- 人脸识别:(抓拍+识别)
- 人脸识别的发展方向:蒙面识别
- 人脸识别
- 人脸识别
- 人脸识别算法
- 简单人脸识别
- 人脸识别代码
- 人脸识别
- [Camera] 人脸识别
- 第十四章 springboot + profile(不同环境读取不同配置)
- Python中的method —— static mthod, class method和instance method
- opencv image2array
- HashMap实现原理分析
- 优化checkbox和radio,类似Bootstrap中的iCheck
- 人脸识别
- 欢迎使用CSDN-markdown编辑器
- Spring-Boot学习笔记(二) 配置文件之初步使用
- 索引的一些知识
- sql server收缩数据库
- composer安装yii过程token报错:for future use by Composer.Token (hidden):
- android事件分发机制解析
- js的事件捕获和事件冒泡学习心得
- 【学习必看】PHP学习路线图