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分量的值,保存为灰度图
Image获取方式 得到Rect的解析pixelStride 1 存储间隔0
rowStride 640 实际存储的是每行有640个像素
width 528 这里用getCropRect得到有效的像素宽度是528列
height 960 有效的像素的高度为960行
buffer size 614288 总共buffer的大小 为 959 * 640 + 528, 最后一行只填充了有效的像素
所以要得到真正有效的全部Y分量要如下进行获取:
有效的Y分量 获取方式 将字节数组转为灰度图保存若转换为Opencv中的mat
可以进行相关的图像处理操作
网友评论