Как разместить изображение над глазами и ртом с помощью CIFeatures

Я нашел эту ссылку для размещения изображения над точками лица. Точно так же мне нужно обнаружить глаза и поместить туда изображение?

Чтобы быть простым, мне нужно разместить изображение над человеческим глазом. Как мне это сделать? Любые советы будут высоко оценены!


person 3DNewbie    schedule 02.04.2013    source источник


Ответы (2)


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);

вы можете получить прямое лицо, но вам нужно улучшить глаз изображения

это поможет вам получить каждую позицию

-(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 

                }

                }
}
}
person Arun    schedule 02.04.2013
comment
Спасибо за ответ. Я попробую и дам вам знать! - person 3DNewbie; 02.04.2013
comment
Я сделал обнаружение глаз. А у меня проблема сделать наложение изображения поверх глаз? Как это сделать? т.е. Вместо кругов или квадратов мне нужно наложение изображения на глаза. - person 3DNewbie; 02.04.2013
comment
@3DNewbie, ты нашел способ сделать это? я тоже застрял в том же - person NSAnant; 19.03.2015
comment
@3DNewbie Как настроить зеркальное отображение EyePosition? Я пытаюсь применить наложение изображения на фронтальную камеру во время выполнения. - person Maniganda saravanan; 26.01.2017

В Apple iOS 5 и более поздних версиях эта функция реализована внутри компании.

Обратитесь к этой документации Apple относительно того же:

http://developer.apple.com/library/mac/#documentation/graphicsimaging/Conceptual/CoreImaging/ci_detect_faces/ci_detect_faces.html

В этом примере они делают то же самое, что и требовалось — обнаружение лиц и глаз.

Надеюсь, это будет полезно для вас.

*Также проверьте эти link1 и ссылка2 , он содержит наложение изображения для обнаруженных областей. Я думаю, это то, что вы ищете.

person Mrunal    schedule 02.04.2013
comment
Спасибо за ваш ответ. Мое намерение состоит в том, чтобы поместить наложенное изображение на позицию глаза. Как это сделать? т.е. Вместо кругов или квадратов мне нужно наложение изображения на глаза. - person 3DNewbie; 02.04.2013
comment
В двух других ссылках вы можете найти то же самое, где они размещают только изображения. - person Mrunal; 02.04.2013
comment
Две другие ссылки не рисуют круг на изображении, а не помещают изображения кругов на глаза! Не могли бы вы направить меня! - person 3DNewbie; 02.04.2013
comment
Извините за беспокойство, проверьте эту ссылку: icapps.com /face-detection-with-core-image-on-live-video Здесь добавление изображения происходит вместо распознавания лиц. - person Mrunal; 02.04.2013