[英]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.