Swift 4 - Как проверить, закрыты ли глаза - PullRequest
0 голосов
/ 23 октября 2018

Я использую Базовое Изображение, чтобы определить лицо, это также успешно,

, но я не могу обнаружить, что глаза закрыты.: (

Я хочу определить лицо и проверить, закрыты ли глаза, большое спасибо !!

код:

    func detect(ciimage:CIImage) {
    let imageOptions =  NSDictionary(object: NSNumber(value: 5) as NSNumber, forKey: CIDetectorImageOrientation as NSString)
    let personciImage = ciimage
    let accuracy = [CIDetectorAccuracy: CIDetectorAccuracyHigh]
    let faceDetector = CIDetector(ofType: CIDetectorTypeFace, context: nil, options: accuracy)
    let faces = faceDetector?.features(in: personciImage, options: imageOptions as? [String : AnyObject])

    //success
    if let face = faces?.first as? CIFaceFeature {


        hasFace = true

        // face.leftEyeClosed not work,It always outputs false
        if face.leftEyeClosed {
            lefteyeclosed = true
        }else{
            lefteyeclosed = false
        }

        // face.leftEyeClosed not work
        if face.rightEyeClosed{
            lefteyeclosed = true
        }else{
            lefteyeclosed = false
        }
    } else {
        hasFace = false
    }
}

Я изменил следующий код:

    let accuracy = [CIDetectorAccuracy: CIDetectorAccuracyHigh]
    let faceDetector = CIDetector(ofType: CIDetectorTypeFace, context: nil, options: accuracy)
    let faces = faceDetector?.features(in: ciimage, options: [CIDetectorEyeBlink : true, CIDetectorImageOrientation: 5])

1 Ответ

0 голосов
/ 23 октября 2018

Из документации leftEyeClosed :

Для обнаружения закрытых глаз должен присутствовать ключ CIDetectorEyeBlink со значением true в словаре, передаваемом функциям детектора (in: options :) метод.

Следовательно, ваши параметры должны быть:

let options = [
   CIDetectorAccuracy: CIDetectorAccuracyHigh,
   CIDetectorEyeBlink: true
]
let faceDetector = CIDetector(ofType: CIDetectorTypeFace, context: nil, options: options)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...