音视频基础知识-RGB
1)RGB基础知识
1.RGB简介
RGB色彩就是常说的光学三原色,R代表Red(红色),G代表Green(绿色),B代表Blue(蓝色)。, 每一种颜色值的范围是0~255,所以每一个颜色用1个字节=8个bit便可完全在计算机内部表示出来。而R, G, B不同的组合几乎产生了所有的颜色,当然自然界中的颜色比这些要远远丰富很多,采用R, G, B的方式,如果以24色深表示的话,在计算机中可表示的颜色数量有2^8* 2 ^8 * 2 ^8 = 16777216中颜色。
2.常见颜色和透明度
- 颜色
颜色名称 | 红色值 Red | 绿色值 Green | 蓝色值 Blue |
---|---|---|---|
黑色 | 0 | 0 | 0 |
蓝色 | 0 | 0 | 255 |
绿色 | 0 | 255 | 0 |
青色 | 0 | 255 | 255 |
红色 | 255 | 0 | 0 |
亮紫色(洋红色) | 255 | 0 | 255 |
黄色 | 255 | 255 | 0 |
白色 | 255 | 255 | 255 |
- 常用阶次透明度16进制对照表
透明度 | 16进制表示 |
---|---|
100% | 00 |
95% | 0D |
90% | 1A |
85% | 26 |
80% | 33 |
75% | 40 |
70% | 4D |
65% | 59 |
60% | 66 |
55% | 73 |
50% | 80 |
45% | 8C |
40% | 99 |
35% | A6 |
30% | B3 |
25% | BF |
20% | CC |
15% | D9 |
10% | E6 |
5% | F2 |
0% | FF |
3.高位字节和低位字节
计算机内存中一个字节的位相当于二进制数的位,这意味着最低有效位表示1,倒数第二个有效位表示2×1或2,倒数第三个有效位表示2×2×1或4,依此类推。如果用内存中的两个字节表示一个16位的数,那么其中的一个字节将存放最低的8位有效位,而另一个字节将存放最高的8位有效位,见图。存放最低的8位有效位的字节被称为最低有效位字节或低位字节,而存放最高的8位有效位的字节被称为最高有效位字节或高位字节。
4.RGB格式
1.像素格式
RGB 像素格式中的 bit 存储的是每一个像素点的 R,G,B 值。
1.RGB16格式
RGB16数据格式主要有二种:RGB565和RGB555。
- RGB565
一个像素用16个bit = 2个字节表示 ,R=5、G=6、B=5。其中, 低字节的前5位用来表示B(BLUE),低字节的后三位+高字节的前三位用来表示G(Green),高字节的后5位用来表示R(RED)。
#define RGB565_MASK_RED 0xF800
#define RGB565_MASK_GREEN 0x07E0
#define RGB565_MASK_BLUE 0x001F
R = (wPixel & RGB565_MASK_RED) >> 11; // 取值范围0-31
G = (wPixel & RGB565_MASK_GREEN) >> 5; // 取值范围0-63
B = wPixel & 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 )
- RGB555
一个像素用16个bit = 2个字节,但是最高位不用,R=5 G=5 B=5
#define RGB555_MASK_RED 0x7C00
#define RGB555_MASK_GREEN 0x03E0
#define RGB555_MASK_BLUE 0x001F
R = (wPixel & RGB555_MASK_RED) >> 10; // 取值范围0-31
G = (wPixel & RGB555_MASK_GREEN) >> 5; // 取值范围0-31
B = wPixel & RGB555_MASK_BLUE; // 取值范围0-31
2.RGB24(RGB888)
一个像素用24个bit = 3个字节来表示,R=8 G=8 B=8
根据RGB565的存储方式,即可得到获取R,G,B分量的值。现假设计算机中存储某一个像素点的变量为color, 数据类型为int. 那么则有:
R = color & 0x0000FF00;
G = color & 0x00FF0000;
B = color & 0xFF000000;
3.RGB32
一个像素用32个bit = 4个字节 来表示,R=8 G=8 B=8,存储顺序为B, G, R,最后8个字节保留。
根据RGB565的存储方式,即可得到获取R,G,B分量的值。现假设计算机中存储某一个像素点的变量为color, 数据类型为short. 那么则有:
R = color & 0x0000FF00;
G = color & 0x00FF0000;
B = color & 0xFF000000;
A = color & 0x000000FF;