我们最常见的都是基于采样的,所以如果图片的宽为,高为,在内存中占的空间为,其中前的空间存放,接着存放,最后存放。
又叫,分别在不同平面,也就是有三个平面,它是,主要分为:

- YU12格式
在也叫作,首先是所有,然后是所有,最后是所有。

- YV12格式
与基本相同,首先是所有,然后是所有,最后是所有。只要注意从适当的位置提取,都可以使用相同的算法进行处理。

YUV模型是根据一个亮度(Y分量)和两个色度(UV分量)来定义颜色空间,常见的YUV格式有YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420等,其中比较常见的YUV420分为两种:YUV420P和YUV420SP。
我们在android平台下使用相机默认图像格式是NV21属于YUV420SP格式 YUV420SP(NV21和NV12)格式

格式的图像阵列,首先是所有,然后是或者交替存储,格式,是一种,即,但是为交错存储,而不是分为三个平面。

- NV21格式
android手机从摄像头采集的预览数据一般都是NV21,存储顺序是先存Y,再VU交替存储,存储顺序是先存,再交替存储:,以 图片为例子,占用内存为 个字节

- NV12格式
NV12与NV21类似,也属于格式,存储顺序是先存,再交替存储:,以 图片为例子,占用内存为 个字节

下面基于实例来理解

先使用将指定的图片转为格式
笔者使用的直接运行下面这段代码,分离出所需的文件
笔者使用的是,因此运行文件,需要提前安装好:,运行之后,需要先设置,否则你看到的图像可能会有问题

先看文件:(分辨率设置为510x510)

显示如下:(分辨率设置为255x255)

显示如下:(分辨率设置为255x255)

- 生成灰度图
上面的例子实际上已经生成了一个了,但是只保留了,你如果直接用查看会有问题,下面的函数将会生成一个标准的并且保留,你可能会有疑问,为什么要写入,其实你可以参考上面的,YUV数据是无法直接显示的,最终需要转成RGB显示,因此我这里是只需要保留,忽略分量的影响,因此根据上面的公式,我在就是十六进制的
- 保留Y分量(生成灰度图)
使用来播放的文件:
要注意这里的分辨率不能错

基于采样,每两个Y共用一组UV分量,一个YUV占8+4+4 = 16bits 2个字节。分离代码如下:
基于采样,每一个Y对应一组UV分量,一个YUV占8+8+8 = 24bits 3个字节。分离代码如下:
参考:
https://blog.csdn.net/leixiaohua1020/article/details/
https://en.wikipedia.org/wiki/YUV

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/194985.html