iOS开发中使用CIDetector检测人脸

在iOS5 系统中,苹果就已经有了检测人脸的api,能够检测人脸的位置,包括左右眼睛,以及嘴巴的位置,返回的信息是每个点位置。在 iOS7中,苹果又加入了检测是否微笑的功能。通过使用 CIDetector可以实现上述功能,一个小demo如下:

#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,这一点需要注意~  

转载于:https://www.cnblogs.com/acBool/p/5070733.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值