Camera2 ImageReader freezes repeating capture request

匿名 (未验证) 提交于 2019-12-03 02:26:02

问题:

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); 

回答1:

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


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!