草庐IT

YUV和RGB的相互转换实验

1、彩色空间转换基本原理1)彩色空间转换公式:为了实现格式转换,我们首先要明确待转换格式和目标格式的特点和相互转换关系,这是编程实现转换的核心。对于RGB转YUV的过程,我们要首先拿到RGB文件的数据,再通过上图的YUV计算公式对其做运算,得到YUV数据,从而实现转换。而对于YUV转RGB则要首先获得YUV数据,用第二组RGB公式计算得到RGB数据。在本实验中,转换公式如下。Y=0.298R+0.612G+0.117B;U=-0.168R-0.330G+0.498B+128;V=0.449R-0.435G-0.083B+128;R=Y+1.4075(V-128);G=Y-0.3455(U-12

如何将yuv420p图像数据转换为RGB数据并使用opencv保存为jpg图片

yuv420是用4个byte存储4个Y的信息,用1个Byte存储U的信息,一个Byte存储V的信息,这4个Y共用这2个U和V,也就是用6个Byte存储4个像素信息,也就是一个像素需要12个Bits(6*8/4),也就是12bpp。注意yuv420p里面的p是指planar,也就是分层存储,先存全部Y的信息,然后是U的信息,最后是V的信息,或者这样说:如果把一个图片按yuv420p的格式保存为二进制数据文件,那么把这个文件均分为6份,那么前面的4份是Y,第5份是U,第6份是V。以下程序的流程是:1使用ffmpeg先将一张图片保存为yuv420p的数据文件。2使用下面的程序读取此文件,然后将yuv

yuv数据(nv12和nv21)和RGB数据之间转换的c++代码

一、首先了解下nv12和nv21的数据排布nv21YYYYYYYYYYYYYYYYVUVUVUVUnv21YYYYYYYYYYYYYYYYUVUVUVUV主要就是UV的顺序不同,交互一下UV的位置就可以互换NV12和NV21.二、bgr(rgb)转nv21(nv12)一般手机等移动端的数据流格式都是yuv格式,而神经网络的输入一般都是rgb格式,所以需要进行转换,这里给出c++的代码示例。cv::Matbgr2yuv(cv::Mat&bgr){   cv::Matimg_yuv_yv12;   intheight=bgr.rows;   intwidth=bgr.cols;   cv::Mat

如何复用ijkplayer库实现ffmpeg的功能

ijkplayer库介绍现在ijkplayer播放器应用的非常广泛,很多播放器基本上都是基于ijkplayer二次迭代开发的,众所周知,ijkplayer是基于ffplay的,所以要使用ijkplayer,就必须使用三个so库。jeffmony@JeffMonydeMacBook-Proarm64-v8a%ls-hltotal21240-rwxr-xr-x1jeffmonystaff 9.6M43000:25libijkffmpeg.so-rwxr-xr-x1jeffmonystaff 348K43000:25libijkplayer.so-rwxr-xr-x1jeffmonystaff 47

如何复用ijkplayer库实现ffmpeg的功能

ijkplayer库介绍现在ijkplayer播放器应用的非常广泛,很多播放器基本上都是基于ijkplayer二次迭代开发的,众所周知,ijkplayer是基于ffplay的,所以要使用ijkplayer,就必须使用三个so库。jeffmony@JeffMonydeMacBook-Proarm64-v8a%ls-hltotal21240-rwxr-xr-x1jeffmonystaff 9.6M43000:25libijkffmpeg.so-rwxr-xr-x1jeffmonystaff 348K43000:25libijkplayer.so-rwxr-xr-x1jeffmonystaff 47

Unity 渲染YUV数据 ---- 以Unity渲染Android Camera数据为例子

1背景一般Unity都是RGB直接渲染的,但是总有特殊情况下,需要渲染YUV数据。比如,Unity读取Android的CameraYUV数据,并渲染。本文就基于这种情况,来展开讨论。Unity读取Android的byte数组,本身就耗时,如果再把YUV数据转为RGB也在脚本中实现(即CPU运行),那就很卡了。一种办法,就是这个转换,放在GPU完成,即,在shader实现!接下来,分2块来贴出源码和实现。2YUV数据来源----Android侧Android的Camera数据,一般是YUV格式的,最常用的就是NV21。其像素布局如下:即数据排列是YYYYVUVU…现在,Android就做一项工作

Unity 渲染YUV数据 ---- 以Unity渲染Android Camera数据为例子

1背景一般Unity都是RGB直接渲染的,但是总有特殊情况下,需要渲染YUV数据。比如,Unity读取Android的CameraYUV数据,并渲染。本文就基于这种情况,来展开讨论。Unity读取Android的byte数组,本身就耗时,如果再把YUV数据转为RGB也在脚本中实现(即CPU运行),那就很卡了。一种办法,就是这个转换,放在GPU完成,即,在shader实现!接下来,分2块来贴出源码和实现。2YUV数据来源----Android侧Android的Camera数据,一般是YUV格式的,最常用的就是NV21。其像素布局如下:即数据排列是YYYYVUVU…现在,Android就做一项工作

YUV格式的图片查看工具YUView 2.13

YUV格式的图片查看工具YUView2.13参考资料:        ImagetoYUV(ffmpeg/ImageMagick)这2个工具可用于音视频格式转换等处理        ImagetoYUV(ffmpeg/ImageMagick)_hushui的博客-CSDN博客        FFmpeg常用命令/参数        https://blog.csdn.net/weixin_36811328/article/details/88037527YUView工具是开源的工具,从网站上下载Windows版的压缩包后直接解压就能运行       https://github.com/IEN

android camera2 拍摄yuv图片,并将yuv 保存成Bitmap的方法

一、yuv简介yuv420p和yuv420spyuv420p(例如yv12):每两行的4个字节对应一个像素的y,每两行的2个字节(uv)对应前面的一个像素的yyuv420sp(例如nv21):每两行的4个字节对应一个像素的y,每一行两个字节(uv)对应前面的一个像素的y例如yv12格式6*4YYYYYYYYYYYYYYYYYYYYYYYYVVVVVVUUUUUU例如nv21格式6*4YYYYYYYYYYYYYYYYYYYYYYYYVUVUVUVUVUVU二、camera2Android回调imagereader返回的YUV_420_888数据,存储方式image=reader.acquireL

BT601/BT709/BT2020 YUV2RGB RGB2YUV 公式

1.前言RGB,YUV(YCbCr)是常用的颜色空间。RGB图像又称真彩色图像,R、G、B分别代表红、绿、蓝3种不同的颜色。YCbCr模型广泛用于数字视频,Y表示亮度,Cb、Cr分别为蓝色分量和红色分量相对于参考值的坐标。      不同标准下RGB与YUV之间的转换公式不同,主要有BT601、BT709、BT2020三个标准。网上查到的公式杂乱,在这里做一个系统的总结。YUV 是YUV颜色空间模式的总称,YUV模式有以下类型:YUV :YUV是一种模拟型号,Y∈[0,1]  U,V∈[-0.5,0.5] YCbCr :也叫YCC或者Y'CbCr,YCbCr是数字信号,它包含两种形式,分别为T