我尝试使用 Camer2 API 从相机获取每一帧以进行图像处理,但我得到一个FATAL EXCEPTION,上面写着
致命异常:主进程:com.example.avoor.camera2api,PID:2831 java.lang.IllegalStateException:图像已关闭
我成功地可以打开相机并将其发送到 TuxtureView 进行预览,但应用程序在涉及OnImageAvailableListener时崩溃。
这是使用的代码:
protected void createCameraPreview() {
try {
SurfaceTexture texture = textureView.getSurfaceTexture();
assert texture != null;
texture.setDefaultBufferSize(imageDimension.getWidth(), imageDimension.getHeight());
Surface surface = new Surface(texture);
ImageReader reader = ImageReader.newInstance(640, 480, ImageFormat.YUV_420_888, 3);
//reader.setOnImageAvailableListener(mOnImageAvailableListener, mBackgroundHandler);
captureRequestBuilder = cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
captureRequestBuilder.addTarget(surface);
captureRequestBuilder.addTarget(reader.getSurface());
List<Surface> outputSurfaces = new ArrayList<>();
outputSurfaces.add(reader.getSurface());
outputSurfaces.add(surface);
///////////////////////////////////////////////////////////////////
ImageReader.OnImageAvailableListener readerListener = new ImageReader.OnImageAvailableListener() {
@Override
public void onImageAvailable(ImageReader reader) {
Image image = null;
try {
image = reader.acquireLatestImage();
final …Run Code Online (Sandbox Code Playgroud)