В 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();
}