繁体   English   中英

从表面视图camera2 api获取相机预览帧

[英]Get camera preview frame from surface view camera2 api

我一直在尝试使用camera2 api获得一天的相机预览帧,但没有取得任何成功。 我找到了一些解决方案,但无法实现这些解决方案。 因此,如果任何人都可以提供一种简单而直接的方式来实现,那就太棒了。

首先,您应该设置目标曲面以从中获取图像。

mCaptureRequestBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);

imageReader =  ImageReader.newInstance(currentWidth, currentHeight, ImageFormat.JPEG, MAX_IMAGES);

List<Surface> outputSurfaces = new ArrayList<>();

outputSurfaces.add(imageReader.getSurface()); // here add as many surface as you want
mCaptureRequestBuilder.addTarget()//this function allow you to set targets

并且此回调允许您检索帧

readerListener = new ImageReader.OnImageAvailableListener() {
                @Override
                public void onImageAvailable(ImageReader reader) {

                  image = reader.acquireLatestImage();
                if(image == null){
                    //System.out.println("it is null image"); // image reader did not get new image
                    return;
                }
                Image.Plane[] planes = image.getPlanes();
                  if(planes[0].getBuffer() == null){ // here 0 indicates first target I set in outputSurfaces list
                      System.out.println("it is null object reference of planes");
                    return;
                  }
                 //.... do whatever you want here

                //After you are done with an image then close it 
               image.close(); 

               }
}

有关完整示例,请参阅Google示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM