1.YUV基础

yuv是一种类似rgb的颜色模型,起源于黑白和彩电的过渡时期。其中Y代表亮度,uv组合起来可以表示色度。yuv信息只有y的信息就足以显示黑白的图片,yuv和YCbCr表示相同的东西,且Cb严格对应U,Cr严格对应V,yuv和rgb可以通过固定公式进行转换。

yuv转rgb:

yuv转rgb

rgb转yuv:

rgb转yuv

yuv主流的采样方式有yuv4:4:4、yuv4:2:2、yuv4:2:0。下图中以黑点表示采样该像素点的Y分量,以空心圆圈表示采用该像素点的UV分量,可以看到这些采样方式是影响uv的采样的,对y都是全部采样。

YUV采样方式

YUV 4:4:4采样,每一个Y对应一组UV分量,图像和rgb占用的字小大小一致,均为pixelsize*3。

YUV 4:2:2采样,每两个Y共用一组UV分量,占用的大小为pixelsize+pixelsize/2+pixelsize/2。

YUV 4:2:0采样,每四个Y共用一组UV分量,占用大小为pixelsize+pixelsize/4+pixelsize/4。

可以看到,yuv格式图像信息可以比rgb格式占用的字节码更少,所以可以用yuv来传输色彩数据,接收到yuv数据后再转换为rgb来显示图像,从而减少了传输图像占用的带宽。

2.常见的YUV格式

yuv衍生出了很多格式,主要是由于其存储方式决定的。

yuv按照存储方式可以分成两个大类:

packed:打包格式是将yuv分量混合存在同一个数组中

planar:平面格式是将yuv三个分量存成三个数组或者两个数组分别存储

packed存储的yuv的存储先后不同,细分为了yuv、yvu、yvyu、uyvy等等。

planar存储的yuv依据数组数量分成了yuv分别三个数组表示的完全平面的,以及y一个数组而uv一个数组的半平面(Semi planar)的两类,而半平面的又可以细分为uv和vu两个存储顺序。

常见的yuv格式列表如下:

I420: YYYYYYYY UU VV =>YUV420P

YV12: YYYYYYYY VV UU =>YUV420P

NV12: YYYYYYYY UVUV =>YUV420SP

NV21: YYYYYYYY VUVU =>YUV420SP //安卓Camera默认格式

3.操作yuv图像

涉及到摄像头帧图像处理的应用经常需要操作Yuv数据帧,例如镜像、加滤镜等。

操作yuv图像可以直接使用google开源的libyuv库,提供了对yuv图像的格式转换、缩放、裁剪、旋转、镜像等操作:谷歌git libyuv,github上有人用其做了简单的安卓版本的demo:安卓libyuvDemo,包含了基础的yuv库的使用逻辑,但是该项目没有同步谷歌libyuv更新。

参考链接:

[安卓libyuvDemo

c语言yuv图片cb,YUV格式图像基础相关推荐

  1. c语言打开一幅tif格式图像,关于Windows Picture Viewer无法打开部分tif格式图像的问题...

    您好,我司为供应链行业,日常工作中需要浏览tif格式图像.windows自带的windows picture viewer支持这种图像格式,能打开多页tif,操作方便,所以我司员工.客户用户都使用这款 ...

  2. c语言yuv图片cb,RGB、YUV和YCbCr

    之前对RGB.YUV和YCbCr一直没有清晰的理解和认识,今天打算做一个小结,结合网上的文章谈谈自己的看法,也希望有机会看到这篇文章的人能指点一二,相互交流,共同进步. 首先要说明,上述的RGB.YU ...

  3. c语言给图片添加椒盐噪声,图像添加高斯噪声、胡椒噪声、盐噪声和椒盐噪声...

    1.盐椒噪声 图像加入椒盐噪声开始,椒盐噪声其实就是使图像的一些随机的像素为黑色(0)或者白色(255): 盐噪声又称白噪声,在图像中添加一些随机的白色像素点(255):胡椒噪声是在图像中添加一些随机 ...

  4. vs2010用c语言实现数据转换成图片,数据压缩第二次实验报告——用C语言实现bmp to yuv的图片格式转化...

    实验目标 实验主要要求将图片格式从BMP到YUV的转化,并生成含有至少五幅图片不少于200帧的图像流. 实验原理 一.BMP图像简介: 典型的BMP图像文件由四部分组成(部分摘自360百科对BMP的定 ...

  5. 使用C++实现YUV格式图像与RGB格式图像之间相互转换

    使用C++实现YUV格式图像与RGB格式图像之间相互转换 一.RGB与YUV转换公式 1.RGB转YUV 1)RGB转换亮度与色差信号公试: 2)归一化为YUV的转化公试为: 2.YUV转RGB 二. ...

  6. 使用C++实现多张BMP图片转换为YUV动画----附加淡入淡出转场(逐渐变明变暗),及垂直滑像转场(逐行渐变)

    使用C++实现多张BMP图片转换为YUV动画----附加淡入淡出转场(逐渐变明变暗),及垂直滑像转场(逐行渐变) 一.BMP图像简介 1.BMP图像是什么? 2.BMP图像文件结构 1)图象文件头 2 ...

  7. 转:YUV RGB 常见视频格式解析

    转: http://www.cnblogs.com/qinjunni/archive/2012/02/23/2364446.html YUV RGB 常见视频格式解析 I420是YUV格式的一种,而Y ...

  8. 为什么YUV全为0的图像是绿色的

    Q: 为什么YUV 全为0 的图像是绿色的 A: 图像中常见的颜色编码有两种方式. 1. YUV - 灰度(亮度) + 色差分量 2. RGB - 红绿蓝 三色分量 通常电视, 视频等都采用yuv编码 ...

  9. 音视频之渲染yuv图片

    音视频之opengl绘制三角形 音视频之opengl渲染图片 音视频之渲染yuv图片 前一篇我们讨论了如何渲染一个普通图片(rgb) 现在我们来讨论如何渲染一个yuv图片. 什么是yuv我们这里有一个 ...

  10. 初识YUV,实战NV21格式数据转换为Bitmap

    初识YUV,实战NV21格式数据转换为Bitmap 一.初识YUV 二.采样方式 2.1.YUV 4:4:4 2.2.YUV 4:2:2 2.2.YUV 4:2:0[重点] 三.存储方式 3.1.pl ...

最新文章

  1. linux配置服务器心得体会,linux 学习 linux上搭建dhcp服务器
  2. Linux:ubuntu设置交换分区
  3. basemap安装_【我是解决安装问题系列_1】Mac python basemap安装
  4. MFC基于单文档制作吹彩色泡泡程序
  5. exchange创建邮箱组_Exchange批量创建用户组及启用通讯组邮箱-阿里云开发者社区...
  6. Ubuntu下pycharm无法输入中文
  7. MySQL 参数设置
  8. php 不懂英文symfony2,请问symfony2一些使用心得
  9. python数据结构与算法 pdf_『python核心编程pdf』数据结构与算法 Python语言描述
  10. Fiji/ImageJ调整图像的对比度;Fiji/Image查看图像的像素直方图分布
  11. 针对2020年市面上短信供应商的对比(8家SMS供应商对比)
  12. 多目标跟踪(Multi-Object-Tracking)入门
  13. 2种特殊电容:X电容和Y电容,
  14. 火狐,Firefox浏览器怎么设置主页
  15. 对异地工作的一些看法
  16. 使用ale-import-roms导入atari的rom时RuntimeError问题解决办法
  17. 程序员业务,微信全文搜索技术优化
  18. 虹科-将人工智能引入电子组装检测
  19. 在VMware上安装win10
  20. ajax请求是宏任务还是微任务_微服务编排引擎Cadence简介

热门文章

  1. 二部图 欧拉图 哈密顿图 平面图 判定条件
  2. 广州天河租房随笔记录
  3. 3dmaxvray的使用方法有哪些?
  4. 维修电工技能实训考核装置
  5. STM32或GD32驱动TM1637
  6. opencv-python API 官网文档
  7. 冰点下载器手机版apk_冰点下载器官网
  8. 人人商城小程序总是弹出“百度未授权使用地图API”的解决方法
  9. NSSM部署Net Core流程
  10. Nginx的集群以及负载均衡