iOS开发中使用CIDetector检测人脸
2015-12-23 17:50
453 查看
在iOS5 系统中,苹果就已经有了检测人脸的api,能够检测人脸的位置,包括左右眼睛,以及嘴巴的位置,返回的信息是每个点位置。在 iOS7中,苹果又加入了检测是否微笑的功能。通过使用 CIDetector可以实现上述功能,一个小demo如下:
可以看一下 CIFaceFeature 里面的信息,如下:
可以看到,通过调用 hasSmile 即可得到图片是否微笑。
最后有一点需要注意:
得到的坐标点中,y值是从下开始的。比如说图片的高度为300,左眼的y值为100,说明左眼距离底部的高度为100,换成我们习惯的,距离顶部的距离就是200,这一点需要注意~
#import <CoreImage/CoreImage.h> //首先包含响应的头文件 /** * 用来存储检测到的信息 */ @property (nonatomic,strong) NSArray *features; //正式代码如下: UIImage *image = [[UIImage alloc] initWithContentsOfFile:self.imagePath]; NSLog(@"imagePath = %@",self.imagePath); CIDetector *faceDetector = [CIDetector detectorOfType:CIDetectorTypeFace context:nil options:[NSDictionary dictionaryWithObject:CIDetectorAccuracyHigh forKey:CIDetectorAccuracy]]; self.features = [faceDetector featuresInImage:[CIImage imageWithCGImage:image.CGImage]]; for(CIFaceFeature *feature in self.features){ if(feature.hasLeftEyePosition){ CGPoint leftEyePos = feature.leftEyePosition; NSLog(@"leftX = %f leftY = %f",leftEyePos.x,leftEyePos.y); } if(feature.hasRightEyePosition){ CGPoint rightEyePos = feature.rightEyePosition; NSLog(@"rightX = %f rightY = %f",rightEyePos.x,rightEyePos.y); } if(feature.hasMouthPosition){ CGPoint mouthPos = feature.mouthPosition; NSLog(@"mouthX = %f mouthY = %f",mouthPos.x,mouthPos.y); } }
可以看一下 CIFaceFeature 里面的信息,如下:
@interface CIFaceFeature : CIFeature { CGRect bounds; BOOL hasLeftEyePosition; CGPoint leftEyePosition; BOOL hasRightEyePosition; CGPoint rightEyePosition; BOOL hasMouthPosition; CGPoint mouthPosition; BOOL hasTrackingID; int trackingID; BOOL hasTrackingFrameCount; int trackingFrameCount; BOOL hasFaceAngle; float faceAngle; BOOL hasSmile; BOOL leftEyeClosed; BOOL rightEyeClosed; }
可以看到,通过调用 hasSmile 即可得到图片是否微笑。
最后有一点需要注意:
得到的坐标点中,y值是从下开始的。比如说图片的高度为300,左眼的y值为100,说明左眼距离底部的高度为100,换成我们习惯的,距离顶部的距离就是200,这一点需要注意~
相关文章推荐
- iOS摄像头和相册
- 在IOS开发中使用自定义的字体
- iOS通知如何传值?
- iOS中Block介绍(二)内存管理与其他特性
- iOS透明viewControler
- iOS 添加PCH全局引用文件 —— HERO博客
- iOS开源库
- IOS button图片与文字互换
- ios 手势操作举例
- iOS -- 图形绘制(全)
- iOS开发系统版本适配(未完待续。。。)
- iOS - 归档的理解和摘记
- iOS如何获取设备声音和振动功能
- iOS CGContextRef画图小结
- ios——学习网址收集
- ios发布可能出现的问题
- iOS如何获取设备硬件信息
- iOS的绘图机制
- iOS字符串的大小写互相转换
- iOS如何从一个界面返回到指定界面?