Я использую CoreImage для обнаружения моргания глаз, он работает нормально, за исключением случаев, когда я пытаюсь обнаружить только один глаз. Любые идеи о том, как обнаружить флирт зрительного контакта с помощью CoreImage ?
if let faceImage = CIImage(image: target) {
let accuracy = [CIDetectorAccuracy: CIDetectorAccuracyHigh]
let faceDetector = CIDetector(ofType: CIDetectorTypeFace, context: nil, options: accuracy)
let faces = faceDetector?.features(in: faceImage, options: [CIDetectorSmile:true, CIDetectorEyeBlink: true])
if !faces!.isEmpty {
for face in faces as! [CIFaceFeature] {
let leftEyeClosed = face.leftEyeClosed
let rightEyeClosed = face.rightEyeClosed
let blinking = face.rightEyeClosed && face.leftEyeClosed
let isSmiling = face.hasSmile
print("isSmiling \(isSmiling)")
print("blinking \(blinking)")
print("rightEyeClosed \(rightEyeClosed)")
print("leftEyeClosed \(leftEyeClosed)\n\n")
}
} else {
print("No faces found")
}
}
UPDATE
Свойства hasLeftEyePosition и hasRightEyePosition всегда имеют значение true.
Оба глаза закрыты
isSmiling false
blinking true
rightEyeClosed true
leftEyeClosed true
Оба глаза Открыт
isSmiling false
blinking false
rightEyeClosed false
leftEyeClosed false
Левый глаз закрыт
isSmiling false
blinking false
rightEyeClosed false
leftEyeClosed false
Правый глаз закрыт
isSmiling false
blinking false
rightEyeClosed false
leftEyeClosed false