* 音视频入门文章目录 *

RGB 简介

RGB 色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB 即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。

RGB格式

RGB16 格式

RGB16 数据格式主要有两种:RGB565 和 RGB555。

1. RGB565

每个像素用 16 比特位表示,占 2 个字节,R,G,B 分量分别使用 5 位、6 位、5 位。

R R R R R G G G G G G B B B B B

从上面排列格式,得到 RGB565 各分量的值:

#define RGB565_MASK_RED 0xF800
#define RGB565_MASK_GREEN 0x07E0
#define RGB565_MASK_BLUE 0x001F
R = (color & RGB565_MASK_RED) >> 11; // 取值范围0-31
G = (color & RGB565_MASK_GREEN) >> 5; // 取值范围0-63
B = color & RGB565_MASK_BLUE; // 取值范围0-31

2. RGB555

每个像素用 16 比特位表示,占 2 个字节,R,G,B 分量都使用 5 位(最高位不用)。

X R R R R R G G G G G B B B B B (X表示不用,可以忽略)

从上面排列格式,得到 RGB555 各分量的值:

#define RGB555_MASK_RED 0x7C00
#define RGB555_MASK_GREEN 0x03E0
#define RGB555_MASK_BLUE 0x001F
R = (color & RGB555_MASK_RED) >> 10; // 取值范围0-31
G = (color & RGB555_MASK_GREEN) >> 5; // 取值范围0-31
B = color & RGB555_MASK_BLUE; // 取值范围0-31

RGB24 格式

每个像素用 24 比特位表示,占 3 个字节,R,G,B 分量都使用 8 位。

R R R R R R R R G G G G G G G G B B B B B B B B

从上面排列格式,得到 RGB 各分量的值:

#define RGB24_MASK_RED 0xFF0000
#define RGB24_MASK_GREEN 0x00FF00
#define RGB24_MASK_BLUE 0x0000FF
R = (color & RGB24_MASK_RED) >> 16;
G = (color & RGB24_MASK_GREEN) >> 8;
B = color & RGB24_MASK_BLUE;

RGB32 格式

每个像素用 32 比特位表示,占 4 个字节,R,G,B,X 分量都使用 8 位。

R R R R R R R R G G G G G G G G B B B B B B B B X X X X X X X X (X表示不用,保留字节)

从上面排列格式,得到 RGBX 各分量的值:

#define RGB32_MASK_RED 0xFF000000
#define RGB32_MASK_GREEN 0x00FF0000
#define RGB32_MASK_BLUE 0x0000FF00
#define RGB32_MASK_X 0x000000FF
R = (color & RGB32_MASK_RED) >> 24;
G = (color & RGB32_MASK_GREEN) >> 16;
B = (color & RGB32_MASK_BLUE) >> 8;
X = color & RGB32_MASK_X;

ARGB32

与 RGB32 的区别在于,保留的 8 个 bit 用来表示透明度,也就是 alpha 的值。

R R R R R R R R G G G G G G G G B B B B B B B B A A A A A A A A

从上面排列格式,得到 RGBA 各分量的值:

#define ARGB_MASK_RED 0xFF000000
#define ARGB_MASK_GREEN 0x00FF0000
#define ARGB_MASK_BLUE 0x0000FF00
#define ARGB_MASK_ALPHA 0x000000FF
R = (color & ARGB_MASK_RED) >> 24;
G = (color & ARGB_MASK_GREEN) >> 16;
B = (color & ARGB_MASK_BLUE) >> 8;
A = color & ARGB_MASK_ALPHA;

参考资料:

百度百科 RGB

图解RGB565、RGB555、RGB16、RGB24、RGB32、ARGB32等格式的区别

视音频数据处理入门:RGB、YUV像素数据处理

内容有误?联系作者:


音视频入门-01-认识RGB的更多相关文章

  1. 音视频入门-11-PNG文件格式详解

    * 音视频入门文章目录 * PNG 文件格式解析 PNG 图像格式文件由一个 8 字节的 PNG 文件署名域和 3 个以上的后续数据块(IHDR.IDAT.IEND)组成. PNG 文件包括 8 字节 ...

  2. 音视频入门-12-手动生成一张PNG图片

    * 音视频入门文章目录 * 预热 上一篇 [PNG文件格式详解]详细介绍了 PNG 文件的格式. PNG 图像格式文件由一个 8 字节的 PNG 文件署名域和 3 个以上的后续数据块(IHDR.IDA ...

  3. 音视频入门-14-JPEG文件格式详解

    * 音视频入门文章目录 * JPEG 文件格式解析 JPEG 文件使用的数据存储方式有多种.最常用的格式称为 JPEG 文件交换格式(JPEG File Interchange Format,JFIF ...

  4. 音视频入门-13-使用开源库生成PNG图片

    * 音视频入门文章目录 * RGB-to-PNG 回顾 上一篇 [手动生成一张PNG图片] 根据 [PNG文件格式详解] 一步一步地手动实现了将 RGB 数据生成了一张 PNG 图片. 有许多开源的 ...

  5. 音视频入门-10-使用libyuv对YUV数据进行缩放、旋转、镜像、裁剪、混合

    * 音视频入门文章目录 * libyuv libyuv 是 Google 开源的实现各种 YUV 与 RGB 之间相互转换.旋转.缩放等的库.它是跨平台的,可在 Windows.Linux.Mac.A ...

  6. 音视频入门-09-RGB&YUV互转-使用开源库

    * 音视频入门文章目录 * 介绍开源库 使用第三方开源库来简化开发,屏蔽一些底层的复杂度,节省大量编写代码的时间. libyuv: Google 开源的实现各种 YUV 与 RGB 之间相互转换.旋转 ...

  7. 音视频入门-08-RGB&YUV

    * 音视频入门文章目录 * YUV & RGB 相互转换公式 YCbCr 的 Y 与 YUV 中的 Y 含义一致,Cb 和 Cr 与 UV 同样都指色彩,Cb 指蓝色色度,Cr 指红色色度,在 ...

  8. 音视频入门-07-认识YUV

    * 音视频入门文章目录 * YUV & YCbCr 简介 YUV,是一种颜色编码方法.常使用在各个视频处理组件中. YUV 在对照片或视频编码时,考虑到人类的感知能力,允许降低色度的带宽. Y ...

  9. 音视频入门-05-RGB-TO-BMP使用开源库

    * 音视频入门文章目录 * RGB-TO-BMP 回顾 将 RGB 数据转成 BMP 图片: 了解 BMP 文件格式 准备 BMP 文件头信息 准备 BMP 信息头 BMP 存储 RGB 的顺序是 B ...

随机推荐

  1. c语言复杂申明解释程序

    c语言复杂声明的解释 目标:分析一个将c语言复杂申明解释为英语的一个程序 首先介绍一种简单的读声明的方法,来源网络 1.右左法则 从标识符开始(或者最内层的结构,如果不存在标识符的话,通常出现于函数指 ...

  2. Python 死循环

    while True: try: x=int(input("Please enter a number:")) break except ValueError: print(&qu ...

  3. PHP根据传入的经纬度,和距离范围,返回所有在距离范围内的经纬度的取值范围

    /** * 根据传入的经纬度,和距离范围,返回所有在距离范围内的经纬度的取值范围 * @param float $lng 经度 * @param float $lat 纬度 * @param floa ...

  4. osgText::Text osg字体

    #ifdef _WIN32 #include <Windows.h> #endif // _WIN32 #include<iostream> #include <osgV ...

  5. 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_01-用户认证需求分析

    1.1 用户认证与授权 截至目前,项目已经完成了在线学习功能,用户通过在线学习页面点播视频进行学习.如何去记录学生的学习过程 呢?要想掌握学生的学习情况就需要知道用户的身份信息,记录哪个用户在什么时间 ...

  6. MGR集群搭建

    MGR全称MySQL Group Replication(Mysql组复制),是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案.MGR提供了高可用.高扩展.高可靠的MySQL ...

  7. cq三期备注说明

    1.关于导航栏添加登陆拦截操作

  8. 红绿灯 promise和原始方式实现

    Promise 方式 async+await function sleep(duration){ return new Promise(function(resolve){ setTimeout(re ...

  9. 【C#设计模式1】单例模式

    一.引言 最近在设计模式的一些内容,主要的参考书籍是<Head First 设计模式>,同时在学习过程中也查看了很多博客园中关于设计模式的一些文章的,在这里记录下我的一些学习笔记,一是为了 ...

  10. Hyper-V VM Generation 2 - Can not boot from .ISO (Hyper-V Gen2不能從DVD啓動 ISO)

    Q: Hyper-V VM Generation 2 - Can not  boot from .ISO (Hyper-V Gen 2不能從DVD啓動 ISO ) A: Disable secure ...