How to place an image on the eye and mouth using CIFeatures

advertisements

I found this link to place the image over the face points. Like the same way I need to detect the eyes and place an image over there?

To be simple I need to place an image over the human eye. How can I do it? Any tips would be highly appreciated!


for ( CIFaceFeature *ff in features ) {

    // find the correct position for the square layer within the previewLayer

    // the feature box originates in the bottom left of the video frame.

    // (Bottom right if mirroring is turned on)

    CGRect faceRect = [ff bounds];

    // flip preview width and height

    CGFloat temp = faceRect.size.width;

    faceRect.size.width = faceRect.size.height;

    faceRect.size.height = temp;

    temp = faceRect.origin.x;

    faceRect.origin.x = faceRect.origin.y;

    faceRect.origin.y = temp;

    // scale coordinates so they fit in the preview box, which may be scaled

    CGFloat widthScaleBy = previewBox.size.width / clap.size.height;

    CGFloat heightScaleBy = previewBox.size.height / clap.size.width;

    faceRect.size.width *= widthScaleBy;

    faceRect.size.height *= heightScaleBy;

    faceRect.origin.x *= widthScaleBy;

    faceRect.origin.y *= heightScaleBy;

    if ( isMirrored )

        faceRect = CGRectOffset(faceRect, previewBox.origin.x + previewBox.size.width - faceRect.size.width - (faceRect.origin.x * 2), previewBox.origin.y);

    else

        faceRect = CGRectOffset(faceRect, previewBox.origin.x, previewBox.origin.y);

you can get the face rect but the u need to fine the eye of the image

this will help u to get the each position

-(void)markFaces:(CIImage *)image
{
    // draw a CI image with the previously loaded face detection picture
    @autoreleasepool {
        CIDetector* detector = [CIDetector detectorOfType:CIDetectorTypeFace
                                                  context:nil options:[NSDictionary dictionaryWithObject:CIDetectorAccuracy forKey:CIDetectorAccuracyHigh]];

        // create an array containing all the detected faces from the detector
        NSArray* features = [detector featuresInImage:image];

        NSLog(@"The Address Of CIImage In: %p %s",image,__FUNCTION__);
        NSLog(@"Array Count %d",[features count]);

        NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

        if([features count]==0)
        {
           //No image is present
        }
        else
        {
            for(CIFaceFeature* faceFeature in features)
            {

                if(faceFeature.hasMouthPosition)
                {
                   // Your code based on the mouth position
                }

              if (faceFeature.hasLeftEyePosition) {
                 // Write your code Note: points are mirrored point so u need to take care of that 

                }
                if (faceFeature.hasRightEyePosition) {
                 // Write your code Note: points are mirrored point so u need to take care of that 

                }

                }
}
}