使用RenderScript

时间:2018-02-14 18:29:49

标签: android renderscript

我正在尝试预览RAW帧并以有效的方式对值进行直方图化。在YUV格式中,可以通过在Camera2 API中将RenderScript Allocation设置为目标曲面来完成此操作:

Allocation ain = Allocation.createTyped(mRS, new Type.Builder(mRS, Element.YUV(mRS))
            .setX(mPreviewSize.getWidth())
            .setY(mPreviewSize.getHeight())
            .setYuvFormat(ImageFormat.YUV_420_888)
            .create(), Allocation.USAGE_IO_INPUT | Allocation.USAGE_SCRIPT);

Surface surface = ain.getSurface()
mPreviewRequestBuilder.addTarget(surface);
mCameraDevice.createCaptureSession(Arrays.asList(surface), mStateCallback, null);

然后使用ScriptIntrinsicHistogram。是否可以将RAW图像直接流式传输到Allocation

我知道ScriptIntrinsicHistogram仅适用于uchar类型,而RAW通常有10位。但是,我对0-255范围更感兴趣,所以我很满意在RenderScript内核中首先截断前导位。

我也知道可以使用ImageReader获取RAW缓冲区,复制到数组,然后重新复制到Allocation,但对于16 MP图像,我希望更多有效的解决方案是可能的。

由于

0 个答案:

没有答案