Camera2 ImageReader 冻结重复捕获请求 [英] Camera2 ImageReader freezes repeating capture request

查看:26
本文介绍了Camera2 ImageReader 冻结重复捕获请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 camera2 API 从相机捕获图像数据.我主要使用来自 android Capture2RAW 示例的代码.在完全停止之前,只有少数图像通过(即调用 onImageAvailable).我尝试使用 RAW_SENSOR 和 JPEG 格式以不同的大小进行捕获,结果相同.我做错了什么?

I'm trying to capture image data from the camera using the camera2 API. I've mostly used code taken from the android Capture2RAW example. Only a few images come through (i.e. calls to onImageAvailable) before stopping completely. I've tried capturing using the RAW_SENSOR and JPEG formats at different sizes with the same results. What am I doing wrong?

this.mImageReader = ImageReader.newInstance(width, height, ImageFormat.RAW_SENSOR, /*maxImages*/ 1);
Surface surface = this.mImageReader.getSurface();
final List<Surface> surfaces = Arrays.asList(surface);
this.mCamera.createCaptureSession(surfaces, new CameraCaptureSession.StateCallback() {
    // Callback methods here
}, null);
CaptureRequest.Builder captureRequestBuilder;
captureRequestBuilder = this.mCamera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
captureRequestBuilder.addTarget(surface);
this.mCaptureRequest = captureRequestBuilder.build();
this.mCaptureSession.setRepeatingRequest(mCaptureRequest, null, null);

推荐答案

已修复.ImageReader产生的Images需要关闭,否则很快就会占满内存.

Fixed it. The Images produced by the ImageReader need to be closed, otherwise they quickly fill up memory.

@Override
onImageAvailable(ImageReader reader) {
    Image image = reader.acquireLatestImage();
    // Process the image
    image.close();
}

这篇关于Camera2 ImageReader 冻结重复捕获请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆