我使用renderscript和allocation从android camera2 api获取y u v__888帧,但是一旦从分配中复制byte[],我就只从组成帧的3个平面接收y平面,而在byte[]中u和v平面的值设置为0。我试图模仿previos相机api中的onpreviewframe,以便对相机帧执行应用内处理。我的分配创建如下:

Type.Builder yuvTypeBuilderIn = new Type.Builder(rs, Element.YUV(rs));
    yuvTypeBuilderIn.setX(dimensions.getWidth());
    yuvTypeBuilderIn.setY(dimensions.getHeight());
    yuvTypeBuilderIn.setYuvFormat(ImageFormat.YUV_420_888);
    allocation = Allocation.createTyped(rs, yuvTypeBuilderIn.create(),
            Allocation.USAGE_IO_INPUT | Allocation.USAGE_SCRIPT);

而我的剧本看起来是:
#pragma version(1)
#pragma rs java_package_name(my_package)
#pragma rs_fp_relaxed

rs_allocation my_frame;

最佳答案

android示例应用程序hdrviewfinderdemo使用renderscript处理来自camera2的yuv数据。
https://github.com/googlesamples/android-HdrViewfinder
具体来说,ViewfinderProcessor设置分配,并从中读取。

09-12 03:56