Camera2 YUV_420_888转NV21

Camera2 Image转NV21


项目需要对Android相机预览帧进行图像处理。而Camera2从ImageReader(设置通用的ImageFormat.YUV_420_888格式)中获取的是YUV格式数据。其中YUV本身只存储颜色信息,不包含图像宽高信息,回调后的YUV数据分别存储在Image Planes的3个数组中。

设置相机预览大小1920 * 1440后打印3个planes数组信息如下:

			int width = image.getWidth();
            int height = image.getHeight();
            ByteBuffer buffer = planes[i].getBuffer();
            int rowStride = planes[i].getRowStride();
            int pixelStride = planes[i].getPixelStride();
            Log.v(TAG, "pixelStride " + pixelStride);
            Log.v(TAG, "rowStride " + rowStride);
            Log.v(TAG, "width " + width);
            Log.v(TAG, "height " + height);
            Log.v(TAG, "buffer size " + buffer.remaining());

在这里插入图片描述
从上至下依次对应Y、U、V三个分量的buffer数据。可见Y的buffer大小就是width * height。U和V的buffer大小是width * height的1/2。

  • 为什么是NV21格式?

NV21格式每四个Y分量共用一组U分量和V分量,Y连续排序,U与V交叉排序。即如下排列:

Y Y   Y Y   Y Y   Y Y
Y Y   Y Y   Y Y   Y Y
Y Y   Y Y   Y Y   Y Y
Y Y   Y Y
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值