Вопрос
Я хочу сделать что-то подобное тому, что делается на Camera2Basic образце, то есть:Использование Camera2 для предварительного просмотра и камеры данные процесса
- Предварительный просмотр изображений с камеры с помощью
TextureView
- Обработка изображения с камеры, используя
ImageReader
С некоторыми отличиями относительно 2
:
- Я заинтересован только на сером канале (яркость) из изображений, подлежащих обработке. Их размеры должны составлять около 1000 x 1000 пикселей (и не самое высокое разрешение)
- Когда доступно изображение для обработки, вместо сохранения изображений на диск будет вызываться общий метод
process(Image)
. То, что этот метод делает это выходит за рамки этого вопроса, но она занимает около 50 мс, чтобы вернуть - Данные изображения должны быть обработаны периодически (около 10 кадров в секунду, но скорость не является критическим) вместо того, чтобы в конечном итоге
Как это сделать, используя API Camera2
?
- Я изменил способ я создаю экземпляр
ImageReader
, выбирая меньшие размеры и другой формат (YUV_420_888
вместоJPEG
). Для получения информации о яркости будет доступна плоскостьY
. Есть ли более эффективный формат (поскольку я просто игнорирую самолетыU
иV
)? - Обе поверхности
TextureView
иImageReader
должны быть заполнены периодически, но с разной скоростью. Поскольку может быть только один повторяющийсяCameraRequest
наCameraCaptureSession
(который может быть установлен по вызовуsetRepeatingRequest()
), я должен периодически звонить по телефонуcapture()
(например, позвонитьsetRepeatingRequest()
с запросом на предварительный просмотр и вызыватьcapture()
с запросом процесса)? - Можно ли улучшить производительность, отправив обработанные запросы для получения изображений, которые будут обработаны из изображений предварительного просмотра? Если да, то как я могу это сделать?