YVU格式Y分量存储为灰度

Android: Image类浅析(结合YUV_420_888)

Image

 Image为Android 5.0以上提供的类,用于保存YUV420格式的集合。

长和宽

对于YUV来说图片的宽和高是必不可少的,因为YUV本身只存储颜色信息,想要还原出图片,必须知道图片的长宽。Image保存有图片的宽和高,可以通过getWidth()和getHeight()得到。

YUV分量

Y、U和V三个分量的数据分别保存在三个Plane类中,可以通过getPlanes()得到。Plane实际是对ByteBuffer的封装。

Image保证了plane #0一定是Y,#1一定是U,#2一定是V。

且对于plane #0,Y分量数据一定是连续存储的,中间不会有U或V数据穿插,也就是说我们一定能够一次性得到所有Y分量的值。

这里我想得到所有的Y分量的值,保存为灰度图

YVU格式Y分量存储为灰度_第1张图片
Image获取方式
YVU格式Y分量存储为灰度_第2张图片
得到Rect的解析

pixelStride 1  存储间隔0

rowStride 640   实际存储的是每行有640个像素

width 528   这里用getCropRect得到有效的像素宽度是528列

height 960  有效的像素的高度为960行

buffer size 614288  总共buffer的大小  为 959 * 640 + 528, 最后一行只填充了有效的像素 

所以要得到真正有效的全部Y分量要如下进行获取:


YVU格式Y分量存储为灰度_第3张图片
有效的Y分量


YVU格式Y分量存储为灰度_第4张图片
获取方式


YVU格式Y分量存储为灰度_第5张图片
将字节数组转为灰度图保存

若转换为Opencv中的mat

可以进行相关的图像处理操作

你可能感兴趣的:(YVU格式Y分量存储为灰度)