美文网首页
利用CIDetector来人脸识别

利用CIDetector来人脸识别

作者: xiaoli飞刀 | 来源:发表于2016-04-15 12:43 被阅读333次

    添加图片:

    UIImage* image = [UIImage imageNamed:@"face.jpg"];

    UIImageView *testImage = [[UIImageView alloc] initWithImage: image];

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

    [[[UIApplication sharedApplication] delegate].window setTransform:

    CGAffineTransformMakeScale(1, -1)];

    [testImage setFrame:CGRectMake(, , testImage.image.size.width,

    testImage.image.size.height)];

    [self.view addSubview:testImage];

    识别图片:

    CIImage* ciimage = [CIImage imageWithCGImage:image.CGImage];

    NSDictionary* opts = [NSDictionary dictionaryWithObject:

    CIDetectorAccuracyHigh forKey:CIDetectorAccuracy];

    CIDetector* detector = [CIDetector detectorOfType:CIDetectorTypeFace

    context:nil options:opts];

    NSArray* features = [detector featuresInImage:ciimage];

    标出脸部,眼睛和嘴:

    for (CIFaceFeature *faceFeature in features){

    }

    // 标出脸部

    CGFloat faceWidth = faceFeature.bounds.size.width;

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

    faceView.layer.borderWidth = 1;

    faceView.layer.borderColor = [[UIColor redColor] CGColor];

    [self.view addSubview:faceView];

    // 标出左眼

    if(faceFeature.hasLeftEyePosition) {

    UIView* leftEyeView = [[UIView alloc] initWithFrame:

    CGRectMake(faceFeature.leftEyePosition.x-faceWidth*0.15,

    faceFeature.leftEyePosition.y-faceWidth*0.15, faceWidth*0.3, faceWidth*0.3)];

    [leftEyeView setBackgroundColor:[[UIColor blueColor] colorWithAlphaComponent:0.3]];

    [leftEyeView setCenter:faceFeature.leftEyePosition];

    leftEyeView.layer.cornerRadius = faceWidth*0.15;

    [self.view  addSubview:leftEyeView];

    }

    // 标出右眼

    if(faceFeature.hasRightEyePosition) {

    UIView* leftEye = [[UIView alloc] initWithFrame:

    CGRectMake(faceFeature.rightEyePosition.x-faceWidth*0.15,

    faceFeature.rightEyePosition.y-faceWidth*0.15, faceWidth*0.3, faceWidth*0.3)];

    [leftEye setBackgroundColor:[[UIColor blueColor] colorWithAlphaComponent:0.3]];

    [leftEye setCenter:faceFeature.rightEyePosition];

    leftEye.layer.cornerRadius = faceWidth*0.15;

    [self.view  addSubview:leftEye];

    }

    // 标出嘴部

    if(faceFeature.hasMouthPosition) {

    UIView* mouth = [[UIView alloc] initWithFrame:

    CGRectMake(faceFeature.mouthPosition.x-faceWidth*0.2,

    faceFeature.mouthPosition.y-faceWidth*0.2, faceWidth*0.4, faceWidth*0.4)];

    [mouth setBackgroundColor:[[UIColor greenColor] colorWithAlphaComponent:0.3]];

    [mouth setCenter:faceFeature.mouthPosition];

    mouth.layer.cornerRadius = faceWidth*0.2;

    [self.view  addSubview:mouth];

    }

    相关文章

      网友评论

          本文标题:利用CIDetector来人脸识别

          本文链接:https://www.haomeiwen.com/subject/wrrnlttx.html