相关疑难解决方法(0)

Android使用渲染脚本将ImageReader Image转换为YCbCr_420_SP(NV21)字节数组?

我目前正在使用Javacv,它利用public void onPreviewFrame(byte[] data, Camera camera)相机功能.

由于相机已被弃用,我一直在研究camera2MediaProjection.这两个库都使用ImageReader类.

目前我ImageReader使用以下代码实例化这样的:

ImageReader.newInstance(DISPLAY_WIDTH, DISPLAY_HEIGHT, PixelFormat.RGBA_8888, 2);

并附上OnImageAvailableListener这样的:

 private final ImageReader.OnImageAvailableListener mOnImageAvailableListener
            = new ImageReader.OnImageAvailableListener() {

        @Override
        public void onImageAvailable(ImageReader reader) {

            mBackgroundHandler.post(new processImage(reader.acquireNextImage()));
        }
Run Code Online (Sandbox Code Playgroud)

我尝试使用RGBA_8888Javacv 的格式按照这个帖子:https://github.com/bytedeco/javacv/issues/298但这对我不起作用.

所以我正在考虑使用Render脚本将这些Image转换为NV21(YUV_420_SP)格式(这是onPreviewFrame函数中相机的默认输出),因为这对我来说对camera库有用.

我还阅读了这个本网站的帖子进行转换,但这些对我不起作用,我担心它们会太慢.此外,我对C的了解非常有限.基本上看起来我想要https://developer.android.com/reference/android/renderscript/ScriptIntrinsicYuvToRGB.html的反向操作

那么你怎么能从一个Image匹配onPreviewFrame函数输出的字节数组,即NV21(YUV_420_SP)格式?最好使用Renderscript,因为它更快.


编辑1:

我尝试过使用ImageFormat.YUV_420_888 …

camera android image-processing renderscript android-camera2

17
推荐指数
1
解决办法
3135
查看次数