Проблемы AVCaptureVideoPreviewLayer с гравитацией видео и точностью распознавания лиц
Я хочу использовать AVFoundation для настройки собственного канала камеры и обрабатывать прямую трансляцию для обнаружения улыбок.
Многое из того, что мне нужно, было сделано здесь: https://developer.apple.com/library/ios/samplecode/SquareCam/Introduction/Intro.html
Этот код был написан давно, поэтому мне нужно было внести некоторые изменения, чтобы использовать его так, как я хочу с точки зрения внешнего вида.
Я сделал следующие изменения:
- Я включил автоматическое расположение и классы размеров, так как я хотел поддерживать разные размеры экрана. Я также изменил размеры слоя предварительного просмотра на полный экран.
- Предустановка сеанса имеет значение AVCaptureSessionPresetPhoto для iPhone и iPad
- Наконец, я установил гравитацию видео на AVLayerVideoGravityResizeAspectFill (похоже, это ключевая точка)
Теперь, когда я запускаю приложение, лица обнаруживаются, но, похоже, в координатах места рисования прямоугольников есть ошибка
Когда я изменяю гравитацию видео на AVLayerVideoGravityResizeAspect, кажется, все снова работает нормально.
Единственная проблема заключается в том, что предварительный просмотр камеры имеет не тот размер, который является полноэкранным.
Так что теперь мне интересно, почему это происходит. Я заметил функцию в квадратной камере: videoPreviewBoxForGravity, которая обрабатывает тип гравитации и, кажется, вносит коррективы. - (CGRect)videoPreviewBoxForGravity:(NSString *) гравитация frameSize:(CGSize)frameSize apertureSize:(CGSize)apertureSize
Одна вещь, которую я заметил здесь, размер кадра остается неизменным независимо от типа гравитации.
Наконец, я прочитал где-то еще, при установке гравитации на AspectFill, некоторая часть подачи обрезается, что понятно, как и в ImageView scaletoFill.
У меня вопрос, как я могу сделать правильные настройки, чтобы это приложение работало для любого типа VideoGravity и любого размера просматривающего слоя.
Я посмотрел на некоторые связанные вопросы, например, CIDetector дает неправильную позицию по чертам лица, похоже, имеет аналогичную проблему, но это не помогает
Заранее спасибо.