音视频入门01认识RGB

41次阅读

共计 1610 个字符,预计需要花费 5 分钟才能阅读完成。

音视频入门文章目录

RGB 简介

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

RGB 格式

RGB16 格式

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

1. RGB565

每个像素用 16 比特位表示,占 2 个字节,RGB 分量分别使用 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


#define RGB(r,g,b) (unsigned int)((r|0x08 << 11) | (g|0x08 << 6) | b|0x08 )
#define RGB(r,g,b) (unsigned int)((r|0x08 << 10) | (g|0x08 << 5) | b|0x08 )

2. RGB555

每个像素用 16 比特位表示,占 2 个字节,RGB 分量都使用 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 格式

RGB24 图像每个像素用 24 比特位表示,占 3 个字节,注意:在内存中 RGB 各分量的排列顺序为:BGR BGR BGR ……

高字节 低字节
B B B B B B B B G G G G G G G G R R R R R R R R

得到 RGB 各分量的值:

B = (color & 0xFF0000) >> 16;
G = (color & 0x00FF00) >> 8;
R = color & 0x0000FF;

RGB32 格式

RGB32 图像每个像素用 32 比特位表示,占 4 个字节,R,G,B 分量分别用 8 个 bit 表示,存储顺序为 B,G,R,最后 8 个字节保留。注意:在内存中 RGB 各分量的排列顺序为:BGRX BGRX BGRX ……

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

得到 RGBX 各分量的值:

B = (color & 0xFF000000) >> 24;
G = (color & 0x00FF0000) >> 16;
R = (color & 0x0000FF00) >> 8;
X = color & 0x000000FF;

ARGB32

本质就是带 alpha 通道的 RGB24,与 RGB32 的区别在与,保留的 8 个 bit 用来表示透明,也就是 alpha 的值。

高字节 低字节
B B B B B B B B G G G G G G G G R R R R R R R R A A A A A A A A

得到 RGBA 各分量的值:

B = (color & 0xFF000000) >> 24;
G = (color & 0x00FF0000) >> 16;
R = (color & 0x0000FF00) >> 8;
A = color & 0x000000FF;

百度百科 RGB
图解 RGB565、RGB555、RGB16、RGB24、RGB32、ARGB32 等格式的区别
视音频数据处理入门:RGB、YUV 像素数据处理

联系作者:


正文完
 0