В Android Camera2 API. Могу ли я использовать считыватель изображений (YUV_420_888) для обработки и другой (JPEG) для захвата неподвижного изображения?

Я пытаюсь, но предпросмотр замораживания, когда я нажимаю кнопку захвата и изображение не создается. Любое предложение? Сколько считывателей изображений я могу использовать в одном проекте Camera2?

1 ответ

Решение

Для каждой создаваемой вами CaptureSession у вас может быть только один ImageReader. Если вы хотите использовать два разных ImageReader для каждого типа изображений, то вам следует использовать два CaptureSession. Но вы должны быть очень осторожны с обработкой ресурсов камеры между двумя сессиями (например, вы должны закрыть ImageReader for JPEG перед запуском другой CaptureSession для захвата изображения YUV_420_888). Использование нескольких CaptureSession также тяжело на устройстве и, как правило, не рекомендуется. Вместо этого вы можете использовать одни и те же байты для обоих типов изображений.

public void onImageAvailable(ImageReader imageReader) {
            byte[] bytes = null;
            Image image = imageReader.acquireLatestImage();
            try {

                ByteBuffer buffer = image.getPlanes()[0].getBuffer();
                bytes = new byte[buffer.capacity()];
                buffer.get(bytes);
                //use the bytes to manipulate
            } catch (Exception e) {
                e.printStackTrace();
            }
            image.close();
            imageReader.close();

        }
Другие вопросы по тегам