ios人脸识别

来源:互联网 发布:网络视频下载器哪个好 编辑:程序博客网 时间:2024/05/16 12:16


- (void)viewDidLoad

{

    [superviewDidLoad];

    

    UIImage *image = [UIImageimageNamed:@"faces1.png"];

    _inputImageView.image = image;

    

}


- (void)didReceiveMemoryWarning

{

    [superdidReceiveMemoryWarning];

    

}


- (void)dealloc {

    [_inputImageView release];

    [_outputImageView release];

    [_button release];

    [super dealloc];

}


- (IBAction)detect:(id)sender {

    

    CIContext *context = [CIContextcontextWithOptions:nil];

    

    UIImage *imageInput = [_inputImageViewimage];

    CIImage *image = [CIImageimageWithCGImage:imageInput.CGImage];

    

    //设置识别参数

    NSDictionary *param = [NSDictionarydictionaryWithObject:CIDetectorAccuracyHigh

                                                      forKey:CIDetectorAccuracy];

    //声明一个CIDetector,并设定识别类型

    CIDetector* faceDetector = [CIDetectordetectorOfType:CIDetectorTypeFace

                                                  context:context options:param];

    

    //取得识别结果

    NSArray *detectResult = [faceDetector featuresInImage:image];

    

    UIView *resultView = [[UIViewalloc] initWithFrame:_inputImageView.frame];

    

    [self.view addSubview:resultView];

    

    

    for(CIFaceFeature* faceFeaturein detectResult) {

        

        //脸部

        UIView* faceView = [[UIViewalloc] initWithFrame:faceFeature.bounds];

        faceView.layer.borderWidth =1;

        faceView.layer.borderColor = [UIColororangeColor].CGColor;

        [resultView addSubview:faceView];

        [faceView release];

        

        //左眼

        if (faceFeature.hasLeftEyePosition) {

            UIView* leftEyeView = [[UIViewalloc] initWithFrame:CGRectMake(0,0, 5, 5)];

            [leftEyeView setCenter:faceFeature.leftEyePosition];

            leftEyeView.layer.borderWidth =1;

            leftEyeView.layer.borderColor = [UIColorredColor].CGColor;

            [resultView addSubview:leftEyeView];

            [leftEyeView release];

        }

        

        //右眼

        if (faceFeature.hasRightEyePosition) {

            UIView* rightEyeView = [[UIViewalloc] initWithFrame:CGRectMake(0,0, 5, 5)];

            [rightEyeView setCenter:faceFeature.rightEyePosition];

            rightEyeView.layer.borderWidth =1;

            rightEyeView.layer.borderColor = [UIColorredColor].CGColor;

            [resultView addSubview:rightEyeView];

            [rightEyeView release];

        }

        

        //嘴巴

        if (faceFeature.hasMouthPosition) {

            UIView* mouthView = [[UIViewalloc] initWithFrame:CGRectMake(0,0, 10, 5)];

            [mouthView setCenter:faceFeature.mouthPosition];

            mouthView.layer.borderWidth =1;

            mouthView.layer.borderColor = [UIColorredColor].CGColor;

            [resultView addSubview:mouthView];

            [mouthView release];

        }

        

    }

    

    [resultView setTransform:CGAffineTransformMakeScale(1, -1)];

    

    [resultView release];

    

    if ([detectResult count] >0)

    {

        CIImage *faceImage = [image imageByCroppingToRect:[[detectResult objectAtIndex:0]bounds]];

        

        UIImage *face = [UIImageimageWithCGImage:[context createCGImage:faceImagefromRect:faceImage.extent]];

        self.outputImageView.image = face;

        

        [self.buttonsetTitle:[NSString stringWithFormat:@"识别人脸数 %i",

                               [detectResult count]]forState:UIControlStateNormal];

    }

    

}


@end

0 0
原创粉丝点击