关于camera2 api和RAW图像格式有很多问题,但在网上搜索我仍然没有找到答案(这就是我在这里的原因顺便说一句)。
我正在尝试使用ImageReader和 setRepeatingRequest 与前置摄像头对摄像头捕获的帧进行一些实时图像处理。正如之前的一些帖子所建议的,我正在以 RAW 格式(特别是 Imageformat.yuv_420_888)获取图像,以便获得大约 30fps 的帧速率:
imageReader = ImageReader.newInstance(width, height, ImageFormat.YUV_420_888, 2);
Run Code Online (Sandbox Code Playgroud)
我的图像处理算法需要 RGB 图像作为输入,所以我需要从 YUV 转换为 RGB。为此,我使用ScriptIntrinsicYuvToRGB
private static Bitmap YUV_420_888_toRGBIntrinsics(Image image) {
if (image == null) return null;
int W = image.getWidth();
int H = image.getHeight();
Image.Plane Y = image.getPlanes()[0];
Image.Plane U = image.getPlanes()[1];
Image.Plane V = image.getPlanes()[2];
int Yb = Y.getBuffer().remaining();
int Ub = U.getBuffer().remaining();
int Vb = V.getBuffer().remaining();
byte[] data = new byte[Yb + Ub + Vb];
Y.getBuffer().get(data, 0, …Run Code Online (Sandbox Code Playgroud)