YUV格式学习:YUYV、YVYU、UYVY、VYUY格式转换成RGB24
前面文章讲过题目中的YUYV、YVYU、UYVY、VYUY格式,它们都是YUV422的打包格式——即在内存中,Y、U、V都是挨着排序的。它们的名称就表示了Y、U、V的顺序。像YUYV,就是Y、U、Y、V、Y、U、Y、V。在做转换时,就显得很容易、简单了。
因为极其相近,故在将这几种格式全部封闭到一个函数里做。代码如下:
void yuv422packed_to_rgb24(YUV_TYPE type, unsigned char* yuv422p, unsigned char* rgb, int width, int height)
{int y, cb, cr;int r, g, b;int i = 0;unsigned char* p;unsigned char* p_rgb;p = yuv422p;p_rgb = rgb;init_yuv422p_table();for (i = 0; i < width * height / 2; i++){switch(type){case FMT_YUYV:y = p[0];cb = p[1];cr = p[3];break;case FMT_YVYU:y = p[0];cr = p[1];cb = p[3];break;case FMT_UYVY:cb = p[0];y = p[1];cr = p[2];break;case FMT_VYUY:cr = p[0];y = p[1];cb = p[2];break;default:break;}r = MAX (0, MIN (255, (V[cr] + Y1[y])/10000)); //R valueb = MAX (0, MIN (255, (U[cb] + Y1[y])/10000)); //B valueg = MAX (0, MIN (255, (Y2[y] - 5094*(r) - 1942*(b))/10000)); //G value// 此处可调整RGB排序,BMP图片排序为BGR// 默认排序为:RGBp_rgb[0] = r;p_rgb[1] = g;p_rgb[2] = b;switch(type){case FMT_YUYV:case FMT_YVYU:y = p[2];break;case FMT_UYVY:case FMT_VYUY:y = p[3];break;default:break;}r = MAX (0, MIN (255, (V[cr] + Y1[y])/10000)); //R valueb = MAX (0, MIN (255, (U[cb] + Y1[y])/10000)); //B valueg = MAX (0, MIN (255, (Y2[y] - 5094*(r) - 1942*(b))/10000)); //G valuep_rgb[3] = r;p_rgb[4] = g;p_rgb[5] = b;p += 4;p_rgb += 6;}
}
在做转换时,要注意YUV422采样格式,2个Y共用1个U和1个V,因此每一次循环就是读取1个Y、1个U和V转换成R、G、B,再读取下一个Y、U、V。由于UV共用,所以第2次转换时不用再给U、V赋值了。
综上,代码依然十分简单。
2015.8.5 晚上 李迟
YUV格式学习:YUYV、YVYU、UYVY、VYUY格式转换成RGB24相关推荐
- word转pdf图片模糊怎么办_嗨格式PDF转换器如何将PDF文件转换成Word?PDF转Word方法...
日常办公,我们有时候需要将PDF文件格式进行转换,鉴于PDF文件的特殊性,这就需要借助专业软件,例如嗨格式PDF转换器.嗨格式PDF转换器支持PDF.Word.Excel.PPT.图片等多种文件格式互 ...
- YUV格式学习:Y转换成RGB24
除了各种YUV格式转换成RGB外,还有一种是只转Y到RGB,如果YUV只有Y分量,也就就是YUV400这个格式了.如果成RGB后,显示出来的图像就是灰度图(因为Y是亮度),也可以理解为黑白图吧.下面给 ...
- YUV格式学习:YUV422P、YV16、NV16、NV61格式转换成RGB24
对于YUV422的格式,网上有一大堆资料,这里就不说了.直奔主题,给出如何转换的函数,一如既往,只用代码说事. YUV422有打包格式(Packed),一如前文所述.同时还有平面格式(Planar), ...
- YUV格式学习:NV16和YUV422P格式互换
其实以前也实现过SP转P的格式,现在再完善一些,写成此文.由于是相同采样空间的转换,只是个别分量位置的调整,只要明白了Y.U.V分量的布置,就很容易写出来. 代码如下: /** yyyy yyyy u ...
- asp.net 将bmp格式图片怎么转换为jpg_PNG图片怎么转换成JPG?原来还可以这么转换...
PNG和JPG的区别是,对于需要高保真的较复杂的图像,PNG虽然能无损压缩,但PNG与JPG相比,PNG格式的文件容量比较大,不适合日常的传播流通.如果需要上传的图片的网页不支持PNG格式的图片上传, ...
- 为什么复制粘贴格式总是出错_想把图片转换成pdf格式怎么做?你找对方法了吗...
在工作中,总是会遇到各式各样的文件格式问题,例如昨天客户要的是PDF版本,我却做成了图片格式,现在只有把图片转换成PDF格式了,关键是几十张的长图,转换起来会不会很麻烦?其实只要找对了方法,就能很轻松 ...
- mysql 美东时间格式_C#/.NET怎么样将UTC时间转换成美国东部时间(EST)
C#/.NET将UTC时间转换成美国东部时间(EST)时,我们需要使用到.NET Framework中与时区有关的TimeZoneInfo类的静态方法:FindSystemTimeZoneById(& ...
- OFD格式的电子发票文件怎么免费转换成PDF
近年来OFD格式正在被越来越多的小伙伴所熟知,我们知道这是一种电子发票的格式,但是这种格式的文件需要特定的软件才能打开,为了方便阅览OFD文件中的内容,不少小伙伴想了很多办法,最终发现将OFD转为PD ...
- python处理时间格式时分秒_python将时分秒转换成秒的实例
处理数据的时候遇到一个问题,从数据库里导出的数据是时分秒的格式:hh:mm:ss ,现在我需要把它转换成秒,方便计算. 原数据可能分两种情况,字段有可能是文本字符串类型的,也有可能是时间类型,他们的处 ...
最新文章
- 环境变量方式使用 Secret - 每天5分钟玩转 Docker 容器技术(158)
- python手册中文版apk-python怎么打包apk
- Linux shell 变量 数学 运算
- 织梦php 中英文加手机,织梦dedecms系统中英文网站之中英文搜索结果
- Apache Common常用jar包
- PHP操作redis
- EF 实现自定义数据库字符串
- mybatis 取查询值_Oracle结合Mybatis实现取表TOP 10条数据
- 如何用r压缩列联表_压缩袋好用吗?哪个牌子比较好?如何选择真空压缩袋?羽绒服能用真空压缩袋吗?...
- 云原生与数据中台,企业数字化转型的“正确打开方式”
- python基础教程廖雪峰云-为什么看不懂廖雪峰的Python学习教程?
- MySQL在windows系统中修改datadir路径后无法启动问题,报错1067
- SSH服务器能够允许root用户远程登录
- 遥感数字图像处理学习 一、概念及组成
- u盘启动蓝屏 索尼vaio_索尼笔记本如何设置u盘启动_索尼笔记本bios设置u盘启动教程介绍...
- 用PaddlePaddle进行图像分割
- 最近公共先祖 C++ 牛客网
- 小麦苗数据库巡检脚本,支持Oracle、MySQL、SQL Server和PG等数据库
- 三菱转以太网模块连接 FX3U/3UC系列 PLC使用步骤
- 安卓handler的用法,handler举例