因为OpenGLES需要用rgb来加载显示,这里就需要将yuv转rgb,这里放在OpenGL里面转换,OpenGL里面使用GPU,提高性能。
YUV420(I420) YUV420在内存上的排列为,先是全部Y,然后是全部U,最后是全部V 二、格式转换1....YUV420转RBGA 按照上图YUV420的存储格式,蓝色部分4个Y、1个U、1个V可以转换出4个像素的RBGA格式。
前两讲详细讲解了YUV444以及YUV422两种格式,实际中这两种格式使用的相对较少,使用比较多的便是本节要梳理的YUV420格式喽,同样,老办法,老套路喽。...---- 一、文字描述: YUV420格式的采样,对于每个2*2的像素块中,采样4次Y,采样1次U和1次V。
用Y,U,V也可以表示所以颜色,由于人眼对UV信息不敏感,所以就出现YUV420,这种,四个Y共用1个UV的,可以减少占用的内存空间,一个像素,Y占一个字节,U占四分之一个字节, V占四分之一个字节,一共占...一段1小时的YUV420原始图像所占内存(帧率25, 宽高1080p) 每幅图像大小 = 1920 * 1080 * 1.5 * 1Byte 存储空间 = 60 * 60 * 25 每幅图像大小 =
网上大多数关于YUV420的资料都是关于YUV420P的,很少有YUV420SP的,因为YUV420SP的UV是交错存放的,处理起来相对麻烦点,但是YUV420SP也是一种常见格式,因此,在这里,我将关于...一、YUV420格式数据介绍 YUV,分为三个分量,“Y”表示明亮度,也就是灰度值;“U”和”V”表示的则是色度,作用是描述影像色彩饱和度,用于指定像素的颜色。...YUV主流的采样方式有三种:YUV4:4:4,YUV4:2:2,YUV4:2:0,这里主要介绍下YUV420。...在YUV420中,一个像素点对应一个Y,一个2X2的小方块对应一个U和V。对于所有YUV420图像,它们的Y值排列是完全相同的,因为只有Y的图像就是灰度图像。...数据格式 2、使用libjpeg库将yuv420数据转换为jpg图片 3、yuv420存储为JPG 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/128491
然而传统的视频编码标准,则主要设计来压缩 YUV420 色彩空间的图像。在这个研究中,作者首先研究如何调整 RGB 图像的深度压缩框架,以压缩 YUV420 图像。...在这篇论文中,作者研究如何调整为 RGB 图像设计的深度压缩框架来压缩 YUV420 颜色空间的图像。...基于深度图像压缩平台 CompressAI 中的 cheng2020-attn 模型,作者提出了两个深度图像压缩框架来编码 YUV420 色彩空间的图像。...图 1:提出的两个 YUV420 深度图像压缩框架。 对于训练深度图像压缩框架,训练目标是使失真和比特率的加权和最小化。...YUV420 色彩空间的最新视频编码标准 VVC。
UUUUUUUU 2、YUV422 (1)YUV422p:YYYYYYYY VVVV UUUU (2)YUVY:YUYV YUYV YUYV YUYV (3)UYVY:UYVY UYVY UYVY UYVY 3、YUV420
先不考虑 YUV422 格式,直接对比 YUV420 和 YUV444,哪个格式更好,更具优势呢?...一、传输效率方面 从传输效率方面来说,YUV420 的效率要优于 YUV444,因为 YUV420 在信号传输时可以节省一定的带宽消耗。为什么这么说呢?...然而,YUV420 格式缺少了 3/4 的色度分量,因此在色彩还原时缺少必要的参考数据信息。...三、存储空间方面 从存储空间方面来说,YUV420 的空间占用要少于 YUV444。这一点和上面提到的传输效率类似,如果要保存相同内容的视频数据,YUV420 格式的数据量比 YUV444 格式要少。...但是在实际应用中,很多企业为了节省传输带宽的开销,普遍采用 YUV420 或者 YUV422 的颜色空间格式。
(4)YV12,YU12格式(属于YUV420) ? YU12和YV12属于YUV420格式,也是一种Plane模式,将Y、U、V分量分别打包,依次存储。...(5)NV12、NV21(属于YUV420) ?...其提取方式与上一种类似,即Y'00、Y'01、Y'10、Y'11共用Cr00、Cb00 YUV420 planar数据, 以720×488大小图象YUV420 planar为例, 其存储格式是: 共大小为...在YUV420中,一个像素点对应一个Y,一个4X4的小方块对应一个U和V。对于所有YUV420图像,它们的Y值排列是完全相同的,因为只有Y的图像就是灰度图像。...YUY2 是 4:2:2 [Y0 U0 Y1 V0] yuv420p 和 YUV420的区别 在存储格式上有区别 yuv420p:yyyyyyyy uuuuuuuu vvvvv yuv420: yuv
比如,对于像素点 Y’00、Y’01 而言,其Cb、Cr的值均为 Cb00、Cr00 4)YV12,YU12格式(属于YUV420) YU12和YV12属于YUV420格式,也是一种Plane模式,...例如:YUV420 plane数据, 以720×488大小图象YUV420 plane为例,其存储格式是: 共大小为(720×480×3>>1)字节,分为三个部分:Y,U和V三个部分内部均是行优先存储,...Y:2592×1936 = 5018112 UV:5018112/2 = 2509056 5)NV12,NV21(属于YUV420) NV12和NV21属于YUV420格式,是一种two-plane...在YUV420中,一个像素点对应一个Y,一个4X4的小方块对应一个U和V。对于所有YUV420图像,它们的Y值排列是完全相同的,因为只有Y的图像就是灰度图像。...YUY2 是 4:2:2 [Y0 U0 Y1 V0] yuv420p 和 YUV420的区别 在存储格式上有区别 yuv420p:yyyyyyyy uuuuuuuu vvvvv yuv420: yuv
为了达到实时处理的目的,很多时候我们将得到的yuv数据直接传入jni中的c++使用,减少上层转化图像格式的过程yuv420本身属于单通道图像,若图像处理中只需要获取灰度图像,可以在c++中直接通过Mat...poutPixels, 0); return true; } 若图像处理时需要彩色图像,则需要先将nv21类型的数据转化为yuv格式,再将yuv转化为BGR彩色图像,构造yuv时的构造函数和直接构造灰度图有些不同,在YUV420...中一个像素对应一个Y,一个2*2的小方块对应一个UV,对于所有YUV420图像,它们的Y值排列是完全相同的,因为只有Y的图像就是灰度图像。...对于一个YUV420在内存中存放的大小: Y = width*height U = Y/4 v = Y/4 所以获取灰度图只需要Y的数据大小就可以,所以构造函数中宽高都是图像的宽高,而要获取YUV彩色图像则需要获取的内存长度为
常见YUV有很多规格,例如YUV444,YUV422和YUV420,后面的数字是表示采样的比例。其中YUV420是FFmpeg里最常用的,因为最省资源。 4:4:4表示完全取样。...YUV420是水平方向和垂直方向都对UV进行2:1采样。例如第一行取U,第二行取V,并且每行的U或者V都是Y的一半,也就是YUV420的YUV是关系是4个Y一个U和一个V。...这样YUV420的UV比YUV422的UV少一半,是YUV444的1/4。 ? 上面只是举了一个例子,实际上YUV420有很多种采样方法,只要符合下图的规律,就是YUV420。 ?
做过camera, 播放器,图片处理的对YUV都不会陌生,但是关于YUV有很多的格式YUV420, NV21, YUV420sp, YV12等等往往令人混乱 介绍 YUV色彩模型利用人类视觉对亮度的敏感度比对色度的敏感度高的特点获得较...与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输) 采样格式 YUV的采样格式主要有3种:YUV444 , YUV422, YUV420 YUV 4:4...YYYY YYYY VV UU YU12: 属于YUV420p, 即 YYYYYYYY UUVV YUV_420_888 Android camera2引入了这个格式,解析起来比较复杂点. 420表示YUV420...其他人的博客有关于YUV_420_888的讲解,这里转一下 Android: Image类浅析(结合YUV_420_888) 内存空间的计算 以yuv420为例 Y = width * height...U = Y / 4 V = Y / 4 所以一帧YUV420的图片 占用的内存空间大小为 Y + U + V = width * height + width * height / 4 + width
RGBA四个分量: R = RGBA & 0x0000FF00 G = RGBA & 0x00FF0000 B = RGBA & 0xFF000000 A = RGBA & 0x000000FF YUV420...+ 1.772 * (U – 128); 由于YUV三个分量是有负数值的,而RGB分量的值都在0-255中间,所以需要将YUV分量进行量化 有上面的知识,加上之前对YUV的了解,下来就可以尝试将一张YUV420...的图片转换成RGB888 void YUV420toRGB(unsigned char *yuv420, unsigned char*rgb ,int width, int height) {...int Ylen = width * height; unsigned char *p_Y420 = yuv420; unsigned char *p_U420 = p_Y420 + Ylen...这样 * 我认为写成(y / 2) * (width / 2) + x / 2可以帮助理解 * 原因如下: * 1.因为是YUV420
(4)YV12,YU12格式(属于YUV420) YU12和YV12属于YUV420格式,也是一种Plane模式,将Y、U、V分量分别打包,依次存储。...其每一个像素点的YUV数据提取遵循YUV420格式的提取方式,即4个Y分量共用一组UV。注意,上图中,Y’00、Y’01、Y’10、Y’11共用Cr00、Cb00,其他依次类推。...(5)NV12、NV21(属于YUV420) NV12和NV21属于YUV420格式,是一种two-plane模式,即Y和UV分为两个Plane,但是UV(CbCr)为交错存储,而不是分为三个plane
常用格式有:YUV444,YUV422,YUV420(为什么是4呢?因为这个4,实际上表达了共享的最大单位!...其实yuv420的取名方式不是很高明,更确切的命名为yuv420yuv402也就是第一行只有两个u,而第二行只有两个v,如下图; 对于yuv420而言,这个家庭的成员如下图所示,显然4个Y公用一组UV...图(c):YUV420获得还原图案在水平方向以及垂直方向上,均出现了丢失,获得的还原图像与原始图像出现很大的失真。...由图5所示的直观观测,对图像高频细节的图像表达上,YUV444优于YUV422,YUV422优于YUV420。在信号传输带宽的节省上,YUV420效率优于YUV444,YUV422优于YUV444。...因此在普通的视频编解码算法上,为节省传输带宽开销,普遍采用YUV420或者YUV422的采样格式。
从YUV420谈起 YUV即通过Y、U和V三个分量表示颜色空间,其中Y表示亮度,U和V表示色度。...不同于RGB中每个像素点都有独立的R、G和B三个颜色分量值,YUV根据U和V采样数目的不同,分为如YUV444、YUV422和YUV420等,而YUV420表示的就是每个像素点有一个独立的亮度表示,即Y...举例来说,对于4x4的图片,在YUV420下,有16个Y值,4个U值和4个V值。...举例来说,对于4x4的图片,在YUV420下,任何格式都有16个Y值,4个U值和4个V值,不同格式只是Y、U和V的排列顺序变化。...也就是说,YUV420是一类格式的集合,YUV420并不能完全确定颜色数据的存储顺序。 Image 这么多眼花缭乱的格式名字自然是不利于程序开发的,Image就这样横空出世了。
YUV420转RGB888 yuv420的数据存储方式是planar,就是在一帧中先存y分量,存完y存u,接着v分量。...而在yuv420中有y分量widthheight byte,uv分量各是widthheight1/4,一帧中总的数据是widthheight3/2(widthheight12/8).所以当时认为,yuv
YUV 数据做转换是怎样实现的,比如说 YUV422 转为 YUV420? YUV 格式是传输视频常用的格式,因为相对于 RGB 格式它可以节省更多空间。...YUV 的格式有很多,例如:YUV444、YUV422、YUV420,常用的 YUV 格式是 YUV420 格式。Y 表示亮度信息,是人眼最敏感的分量,UV 则表示色度信息。...YUV420 表示采样方式:UV 分量具有 2:1 的水平采样,2:1 的垂直采样,这里并不是指只有 U,没有 V,而是对于每一行,只有一个 U 或者 V 分量,如果第一行是 4:2:0,那么下一行就是...YUV 数据因为计算量大和数据量大可以都放到 GPU 存储和计算,YUV422 转 YUV420 可以利用 OpenGL 将 YUV422 的 UV 数据转换成 texture 纹理,编写 shader...做格式转换逻辑继而生成 YUV420 的 UV texture,再通过 readPixel 将显存的 UV 数据读取出来。
在YUV420中,一个像素点对应一个Y,一个4X4的小方块对应一个U和V。对于所有YUV420图像,它们的Y值排列是完全相同的,因为只有Y的图像就是灰度图像。...(见下图) 有了上面的理论,我就可以准确的计算出一个YUV420在内存中存放的大小。...width hight =Y(总和) U = Y / 4 V = Y / 4 ,所以YUV420 数据在内存中的长度是 width hight * 3 / 2。
领取专属 10元无门槛券
手把手带您无忧上云