Невозможно определить лица на изображении из-за ориентации изображения
Я хочу использовать этот код для обнаружения лиц на изображении через CIFaceDetector.
let Orientation: Int!
switch ((info[UIImagePickerControllerOriginalImage] as? UIImage)?.imageOrientation)! {
case UIImageOrientation.up:
Orientation = 1
case UIImageOrientation.down:
Orientation = 3
case UIImageOrientation.left:
Orientation = 8
case UIImageOrientation.right:
Orientation = 6
case UIImageOrientation.upMirrored:
Orientation = 2
case UIImageOrientation.downMirrored:
Orientation = 4
case UIImageOrientation.leftMirrored:
Orientation = 5
case UIImageOrientation.rightMirrored:
Orientation = 7
}
let options = [CIDetectorAccuracy: CIDetectorAccuracyHigh, CIDetectorImageOrientation: Orientation] as [String : Any]
let faceDetector = CIDetector(ofType: CIDetectorTypeFace, context: nil, options: options)
let faces = faceDetector?.features(in: personciImage)
Однако это работает только в ландшафтном праве. Я понятия не имею, почему это не работает во всех других направлениях. Я имею в виду, ориентация должна быть установлена правильно. Я также применяю UIImage к CIImage.
guard let personciImage = CIImage(image: (info[UIImagePickerControllerOriginalImage] as? UIImage)!) else {
return
}
Проблема в этом?
1 ответ
От CIDetector
Документы конфигурации здесь, кажется, что ключ ориентации на самом деле не вариант для этого класса. Вероятно, класс распознавания лиц на самом деле предпочитает, чтобы ВЫ поворачивали изображение перед его передачей.
Поворот изображения довольно прост, и его также можно искать на SO, я нашел быстрый пример, но я уверен, что есть и другие! пример быстрого вращения