前面文章讲过题目中的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相关推荐

  1. word转pdf图片模糊怎么办_嗨格式PDF转换器如何将PDF文件转换成Word?PDF转Word方法...

    日常办公,我们有时候需要将PDF文件格式进行转换,鉴于PDF文件的特殊性,这就需要借助专业软件,例如嗨格式PDF转换器.嗨格式PDF转换器支持PDF.Word.Excel.PPT.图片等多种文件格式互 ...

  2. YUV格式学习:Y转换成RGB24

    除了各种YUV格式转换成RGB外,还有一种是只转Y到RGB,如果YUV只有Y分量,也就就是YUV400这个格式了.如果成RGB后,显示出来的图像就是灰度图(因为Y是亮度),也可以理解为黑白图吧.下面给 ...

  3. YUV格式学习:YUV422P、YV16、NV16、NV61格式转换成RGB24

    对于YUV422的格式,网上有一大堆资料,这里就不说了.直奔主题,给出如何转换的函数,一如既往,只用代码说事. YUV422有打包格式(Packed),一如前文所述.同时还有平面格式(Planar), ...

  4. YUV格式学习:NV16和YUV422P格式互换

    其实以前也实现过SP转P的格式,现在再完善一些,写成此文.由于是相同采样空间的转换,只是个别分量位置的调整,只要明白了Y.U.V分量的布置,就很容易写出来. 代码如下: /** yyyy yyyy u ...

  5. asp.net 将bmp格式图片怎么转换为jpg_PNG图片怎么转换成JPG?原来还可以这么转换...

    PNG和JPG的区别是,对于需要高保真的较复杂的图像,PNG虽然能无损压缩,但PNG与JPG相比,PNG格式的文件容量比较大,不适合日常的传播流通.如果需要上传的图片的网页不支持PNG格式的图片上传, ...

  6. 为什么复制粘贴格式总是出错_想把图片转换成pdf格式怎么做?你找对方法了吗...

    在工作中,总是会遇到各式各样的文件格式问题,例如昨天客户要的是PDF版本,我却做成了图片格式,现在只有把图片转换成PDF格式了,关键是几十张的长图,转换起来会不会很麻烦?其实只要找对了方法,就能很轻松 ...

  7. mysql 美东时间格式_C#/.NET怎么样将UTC时间转换成美国东部时间(EST)

    C#/.NET将UTC时间转换成美国东部时间(EST)时,我们需要使用到.NET Framework中与时区有关的TimeZoneInfo类的静态方法:FindSystemTimeZoneById(& ...

  8. OFD格式的电子发票文件怎么免费转换成PDF

    近年来OFD格式正在被越来越多的小伙伴所熟知,我们知道这是一种电子发票的格式,但是这种格式的文件需要特定的软件才能打开,为了方便阅览OFD文件中的内容,不少小伙伴想了很多办法,最终发现将OFD转为PD ...

  9. python处理时间格式时分秒_python将时分秒转换成秒的实例

    处理数据的时候遇到一个问题,从数据库里导出的数据是时分秒的格式:hh:mm:ss ,现在我需要把它转换成秒,方便计算. 原数据可能分两种情况,字段有可能是文本字符串类型的,也有可能是时间类型,他们的处 ...

最新文章

  1. 环境变量方式使用 Secret - 每天5分钟玩转 Docker 容器技术(158)
  2. python手册中文版apk-python怎么打包apk
  3. Linux shell 变量 数学 运算
  4. 织梦php 中英文加手机,织梦dedecms系统中英文网站之中英文搜索结果
  5. Apache Common常用jar包
  6. PHP操作redis
  7. EF 实现自定义数据库字符串
  8. mybatis 取查询值_Oracle结合Mybatis实现取表TOP 10条数据
  9. 如何用r压缩列联表_压缩袋好用吗?哪个牌子比较好?如何选择真空压缩袋?羽绒服能用真空压缩袋吗?...
  10. 云原生与数据中台,企业数字化转型的“正确打开方式”
  11. python基础教程廖雪峰云-为什么看不懂廖雪峰的Python学习教程?
  12. MySQL在windows系统中修改datadir路径后无法启动问题,报错1067
  13. SSH服务器能够允许root用户远程登录
  14. 遥感数字图像处理学习 一、概念及组成
  15. u盘启动蓝屏 索尼vaio_索尼笔记本如何设置u盘启动_索尼笔记本bios设置u盘启动教程介绍...
  16. 用PaddlePaddle进行图像分割
  17. 最近公共先祖 C++ 牛客网
  18. 小麦苗数据库巡检脚本,支持Oracle、MySQL、SQL Server和PG等数据库
  19. 三菱转以太网模块连接 FX3U/3UC系列 PLC使用步骤
  20. 安卓handler的用法,handler举例

热门文章

  1. 3299元起!结缘梅奔F1车队,Redmi K50电竞版发布
  2. 腾讯计划对斗鱼进行私有化?斗鱼盘前涨超10%
  3. 诺贝尔奖发了120年,钱怎么越花越多?
  4. 晨光文具卖出去的笔能绕地球几圈?
  5. 特斯拉维权车主发声:方式会变,维权不会变,绝不妥协!
  6. iPhone 13 mini背部新外观曝光:双摄对角线排布
  7. 奖励千万元别墅!椰树集团又来招人了,入职肯定有美女帅哥追?
  8. 特斯拉否认推出16万元电动车 近期全球多地曝召回
  9. 苏宁回应“股权质押”:正常商业合作
  10. 35款安卓App被通报窃取个人隐私!快看看你的手机里有没有