Не удается получить iOS для определения особенностей лица - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть следующий код для получения черт лица с CIDetector:

    CGImageRef rotatedImage = [self rotate90Degree:image];

    CIImage *ciImage = [CIImage imageWithCGImage:rotatedImage];

    CIContext *context = [CIContext context];
    NSDictionary *opts = @{ CIDetectorAccuracy : CIDetectorAccuracyHigh,
                            CIDetectorEyeBlink : @YES,
                            CIDetectorImageOrientation : @1 };

    CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeFace
                                              context:context
                                              options:opts];

    NSArray *features = [detector featuresInImage:ciImage options:opts];

И затем я обнаруживаю, близки ли глаза, как это:

    for (CIFaceFeature* ciFace in features) {
        NSLog(@"Left: %@ - Right %@", ciFace.leftEyeClosed, ciFace.rightEyeClosed);
        if (ciFace && ciFace.leftEyeClosed != NULL && ciFace.rightEyeClosed != NULL) {
            if (eye == 1) { // right eye closed
                return ciFace.leftEyeClosed && !ciFace.rightEyeClosed;
            } else {
                return ciFace.rightEyeClosed && !ciFace.leftEyeClosed;
            }
        }
    }

Однако, этоникогда не проходит мимо первого, если это делает проверку на ноль, и мой вывод всегда Left: (null) - Right (null)

Я использую одно и то же изображение для VNFaceObservations, и это прекрасно работает.Я попытался повернуть изображение во всех возможных направлениях, и на каждом повернутом изображении я попытался использовать поле CIDetectorImageOrientation, чтобы получить все значения от 1 до 8

После тестирования на сотнях изображений, нескольких лицах икаждая возможная комбинация поворотов и ориентации - я по-прежнему получаю нулевое значение для обеих функций.

Что-то мне не хватает?

...