AVCaptureSession не дает хорошего качества фотографии и хорошего разрешения
Я работаю с AVCaptureSession
для захвата изображения. Его рабочий штраф
но не дает хорошего разрешения. Я сравнил его с изображением, снятым камерой iPhone, и я обнаружил, что iPhone Camera Image намного лучше, чем AVCaptureSession
изображение.
Я видел 3-4 ссылки на stackOverflow об этом, но не нашел никакого решения.
Также я пробовал все пресеты
AVCaptureSessionPresetPhoto,
AVCaptureSessionPresetHigh,
AVCaptureSessionPresetMedium,
AVCaptureSessionPresetLow,
AVCaptureSessionPreset352x288,
AVCaptureSessionPreset640x480,
AVCaptureSessionPreset1280x720,
AVCaptureSessionPreset1920x1080,
AVCaptureSessionPresetiFrame960x540,
AVCaptureSessionPresetiFrame1280x720,
но все же изображение имеет меньшее качество. Пожалуйста, дайте мне знать, если мой вопрос недостаточно ясен или я что-то пропустил.
Любая помощь будет оценена.
Ответы
Ответ 1
При использовании предустановленного AVCaptureSessionPresetPhoto с AVCaptureStillImageOutput я могу записывать изображения на iPhone 4S с разрешением 3268x2448, что является тем же самым разрешением, которое дает встроенное приложение для камеры. То же самое верно для iPhone 4, Retina iPad и т.д., Поэтому, если вы используете эту предустановку с вводом неподвижного изображения, вы получите буфер образца обратно с -captureStillImageAsynchronouslyFromConnection:completionHandler:
, который является собственным разрешением камеры.
Что касается качества фото, помните, что встроенное приложение камеры имеет возможность захватывать фотографии с высоким динамическим диапазоном (HDR) путем быстрого получения изображений с разными уровнями экспозиции. У нас нет доступа к этому через стандартные API-интерфейсы AV Foundation, поэтому мы получаем только одно изображение с определенным уровнем экспозиции.
Если вы отключите HDR, качество изображения будет идентично мне. Вот увеличенная часть снимка, снятого с помощью AVCaptureStillImageOutput:
![AVCaptureStillImageOutput image]()
и вот один из встроенного приложения для фотографий:
![Built-in Photos image]()
Игнорируя небольшие различия в освещении из-за небольшого сдвига в направлении камеры, разрешение и точность изображений, захваченных в обоих направлениях, выглядят одинаково.
Я захватил первое изображение, используя приложение примера SimplePhotoFilter из мою инфраструктуру с открытым исходным кодом GPUImage, заменив по умолчанию GPUImageSketchFilter на GPUImageGammaFilter, который не отрегулируйте гамму любой, просто выполнили переход.
Ответ 2
У нас была такая же проблема с использованием этой ссылки на код. Фотографии были особенно плохими с использованием передней фронтальной камеры iPad.
Мы исправили это, добавив 1 секунду задержки между настройкой менеджера захвата и вызовом метода захвата изображения. Для нас было достаточно большой разницы, что мы были довольны результатом. Похоже, что для открытия затвора необходимо некоторое время, чтобы выполнить настройки автофокуса/белого баланса по умолчанию.
[NSTimer scheduledTimerWithTimeInterval:1.0
target:self.captureManager
selector:@selector(captureStillImage)
userInfo:nil repeats:NO];
Ответ 3
Просто добавьте эту строку кода в свой файл
self.captureSession.sessionPreset = AVCaptureSessionPresetPhoto
Вы получите потрясающее разрешение, например, встроенное приложение для камеры из яблока.