* 音视频入门文章目录 *

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. Vue学习手记01-安装和项目创建

    1.安装Vue  注:node版本必须大于等于8.9  vue-cli3.x:npm install -g @vue/cli  vue-cli2.x:npm install -g @vue/cli-i ...

  2. 解决用root用户及密码可以直接登陆某LINUX系统,但是用ssh登陆,系统却总是提示密码不对

    引用 vi /etc/ssh/sshd_config 将PermitRootLogin项改为yes service sshd restart 重启sshd服务即可

  3. group by 分组去重查询

    数据库中的数据是这样的: 想要看看有几种类型,可以用group by: select * from activiti.act_ru_task where PROC_INST_ID_ in (selec ...

  4. 使用ConstraintLayout(约束布局)构建响应式UI

    使用ConstraintLayout(约束布局)构建响应式UI 转 https://www.300168.com/yidong/show-2740.html     核心提示:ConstraintLa ...

  5. angular自定义组件

    https://cli.angular.io/ 打开终端创建header组件: ng g component components/header import { Component, OnInit ...

  6. json简单案例

    1.Group类 import java.util.ArrayList; import java.util.List; class Group{ private int id; private Str ...

  7. 【ARTS】01_38_左耳听风-201900729~201900804

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  8. 01.轮播图之三 : collectionView 轮播

    个人觉得 collection view 做轮播是最方便的,设置下flowlayout 其他不会有很大的变动,没有什么逻辑的代码 let's begin…… 创建自定义的view .h 声明文件 @i ...

  9. 《CNCF × Alibaba云原生技术公开课》知识点自测(一):第一堂“云原生”课

    (单选)1.容器启动后,我会时常 SSH 进入到容器里然后写很多文件.请问这破坏了云原生理念了吗? A. 否   B. 是 (单选)2.云原生架构必须选型 Kubernetes 方案. A. 否  B ...

  10. some code about numpy and notes about copy&broadcasting

    import numpy as np np.__version__ #版本 #由于python的list不要求存储同样的类型,但是效率不高. L = [i for i in range(10)] L[ ...