RGB
���¼���ԭʼ��ҳ ��ӡRGB
色彩模式使用
RGB模型为图像中每一个
像素的RGB分量分配一个0~255范围内的强度值。RGB
图像只使用三种颜色,就可以使它们按照不同的比例混合,在
屏幕上呈现16777216(256 * 256 * 256)种颜色。
电脑屏幕上的所有颜色,都由这红色绿色蓝色三种色光按照不同的比例混合而成的。一组红色绿色蓝色就是一个最小的显示单位。屏幕上的任何一个颜色都可以由一组RGB值来记录和表达。
因此这红色绿色蓝色又称为三原色光,用英文表示就是R(red)、G(green)、B(blue)。
在电脑中,RGB的所谓“多少”就是指亮度,并使用整数来表示。通常情况下,RGB各有256级亮度,用数字表示为从0、1、2...直到255。注意虽然数字最高是255,但0也是数值之一,因此共256级。如同2000年到2010年共是11年一样。
按照计算,256级的RGB色彩总共能组合出约1678万种色彩,即256×256×256=16777216。通常也被简称为1600万色或千万色。也称为24位色(2的24次方)。
在
led领域利用三合一点阵全彩技术, 即在一个发光单元里由RGB三色晶片组成全彩
像素。随着这一技术的不断成熟,
led显示技术会给人们带来更加丰富真实的
色彩感受。
RGB是从
颜色发光的原理来设计定的,通俗点说它的
颜色混合方式就好像有红、绿、蓝三盏灯,当它们的光相互叠合的时候,
色彩相混,而
亮度却等于两者亮度之总和,越混合亮度越高,即加法混合。
有色光可被无色光冲淡并变亮。如蓝色光与白光相遇,结果是产生更加明亮的浅蓝色光。知道它的混合原理后,在
软件中设定颜色就容易理解了。
红、绿、蓝三盏灯的叠加情况,中心三色最亮的叠加区为白色,加法混合的特点:越叠加越明亮。
红、绿、蓝三个
颜色通道每种色各分为255阶
亮度,在0时“灯”最弱——是关掉的,而在255时“灯”最亮。当三色数值相同时为无
色彩的
灰度色,而三色都为255时为最亮的白色,都为0时为黑色。
RGB 颜色称为加成色,因为您通过将 R、G 和 B 添加在一起(即所有光线反射回眼睛)可产生白色。加成色用于
照明光、
电视和
计算机 显示器。例如,
显示器通过红色、绿色和蓝色荧光粉发射光线产生颜色。绝大多数可视
光谱都可表示为红、绿、蓝 (RGB) 三色光在不同比例和强度上的混合。这些颜色若发生重叠,则产生青、
洋红和黄。
对一种颜色进行编码的方法统称为“
颜色空间”或“
色域”。用最简单的话说,世界上任何一种颜色的“
颜色空间”都可定义成一个固定的数字或
变量。RGB(红、绿、蓝)只是众多
颜色空间的一种。采用这种编码方法,每种颜色都可用三个
变量来表示-红色绿色以及蓝色的强度。记录及显示彩色图像时,RGB是最常见的一种方案。但是,它缺乏与早期黑白显示系统的良好兼容性。因此,许多电子电器厂商普遍采用的做法是,将RGB转换成
YUV颜色空间,以维持兼容,再根据需要换回RGB格式,以便在电脑
显示器上显示彩色图形。
由于网页(
WEB)是基于
计算机 浏览器开发的媒体,所以颜色以光学颜色RGB(红、绿、蓝)为主。网页颜色是以16进制代码表示,一般格式为#DEFABC (字母范围从A-F,数字从0-9 );如黑色,在
网页代码中便是:#000000(在
css编写中可简写为#000)。当颜色代码为#AABB11时,可以简写为#AB1表示,如#135与#113355表示同样的颜色。
RGB1、RGB4、RGB8都是
调色板类型的RGB格式,在描述这些媒体类型的格式细节时,通常会在BITMAPINFOHEADER
数据结构后面跟着一个调色板(定义一系列颜色)。它们的图像数据并不是真正的颜色值,而是当前
像素颜色值在
调色板中的索引。以RGB1(2色
位图)为例,比如它的
调色板中定义的两种颜色值依次为0x000000(黑色)和0xFFFFFF(白色)…(每个
像素用1位表示)表示对应各像素的颜色为:黑黑白白黑白黑白黑白白白…。
RGB555是另一种16位的RGB格式,RGB分量都用5位表示(剩下的1位不用)。使用一个字读出一个像素后,这个字的各个位意义如下:
高字节 低字节
X R R R R R G G G G G B B B B B (X表示不用,可以忽略)
可以组合使用屏蔽字和移位操作来得到RGB各分量的值:
#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
RGB565使用16位表示一个
像素,这16位中的5位用于R,6位用于G,5位用于B。程序中通常使用一个字(WORD,一个字等于两个字节)来操作一个
像素。当读出一个
像素后,这个字的各个位意义如下:
高字节 低字节
R R R R R G G G G G G B B B B B
可以组合使用屏蔽字和移位操作来得到RGB各分量的值:
#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 )
该代码可以解决24位与16位相互转换的问题
RGB24使用24位来表示一个
像素,RGB分量都用8位表示,取值范围为0-255。注意在内存中RGB各分量的排列顺序为:BGR BGR BGR…。通常可以使用RGBTRIPLE
数据结构来操作一个
像素,它的定义为:
typedef struct tagRGBTRIPLE {
BYTE rgbtBlue; // 蓝色分量
BYTE rgbtGreen; // 绿色分量
BYTE rgbtRed; // 红色分量
} RGBTRIPLE;
RGB32使用32位来表示一个像素,RGB分量各用去8位,剩下的8位用作Alpha
通道或者不用。(ARGB32就是带Alpha
通道的RGB24。)注意在内存中RGB各分量的排列顺序为:BGRA BGRA BGRA…。通常可以使用RGBQUAD
数据结构来操作一个像素,它的定义为:
typedef struct tagRGBQUAD {
BYTE rgbBlue; // 蓝色分量
BYTE rgbGreen; // 绿色分量
BYTE rgbRed; // 红色分量
BYTE rgbReserved; // 保留字节(用作Alpha
通道或忽略)
} RGBQUAD。
● 采集
计算机VGA输出屏幕、各种非标准相机的输出采集设备、标准或非标的RGB
分量信号● 采集的信号种类按照接口可为复合非标准
模拟信号,绿路带同步的/行场分离的RGB分量信号
● 高分辨率高帧率:1280×1024/40帧;1024×768/60帧;800×600/120帧;
● 最高点频可达170M
● 支持硬件任意开窗,二级缩放,硬件翻转
● 有类似内存映射的功能,多个应用程序/进程可以共享其采集的图像数据;
● 硬件控制帧率流量,可在实际使用中和其它
采集卡配合,更有效提高PCI
带宽的利用
● 支持RGB32、RGB24、YUV422、RGB8等采集格式
● 全自动行
场频检测:具有全自动行场频自适应能力和信号自检测能力,信源端信号的变化不需要用户调节,完全适合无人值守应用
●
编程完全使用
微软提供DirectShow /VFW接口,也可提供基于VC、VB、Delphi等的二次开发包演示程序和源代码,
●可使用微软的AmCap,VidCap,Windows Media Encode,Window Movie Maker、第三方提供的LabView等应用
软件/RGB信号采集卡可采集VGA信号、标准和非标准RGB分量等信号源,适用于高精度、高
分辨率的图像采集、高清VGA视频图像的存储、编码传输等要求。
● 操作系统支持:Windows 2000、XP、Vista、7 linux unix等主流操作系统.
● SDK支持:VC、VB、Delphi,提供演示程序及演示程序源代码!
● 驱动支持:DirectX、OpenCV、LabView、
RGB
色彩空间根据实际使用设备系统能力的不同,有各种不同的实现方法。截至2006年,最常用的是24-位实现方法,也就是红绿蓝每个
通道有8位或者256色级。基于这样的24-位RGB 模型的
色彩空间可以表现 256×256×256 ≈ 1670万色。一些实现方法采用每原色16位,能在相同范围内实现更高更精确的
色彩密度。这在宽域
色彩空间中尤其重要,因为大部分通常使用的颜色排列的相对更紧密。
印刷技术的当中的RGB
色彩空间主要是指加色法当中的三度色彩空间,通过使用不同强度的三原色,红、绿、蓝色的光线来组合成不同的色彩,就好像说,如果平时我们利用扫描仪从印刷品上扫描图像,原理就是扫描仪阅读了图像上面的红、绿、蓝三色的光
亮度,然后把这些量度转换成数据,当
显示器收到这些数据的时候就可以按照程序设定转换成制定的红、绿、蓝三原色,其实他们当中是有很多不同颜色的小色块的,由于这些色块的
像素非常非常的小而且密密麻麻的,所以我们眼睛没法分辨出来。
#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16)))
这是个带三个参数的宏,
首先将r,g,b强制转换成BYTE型,之后g左移8位,b左移16位,并把结果分别强制转换成DWORD型,最后将r,左移8位后的g,还有左移16位后的b三者做按位或,所得的结果强制转换成COLORREF类型。
[2]TheRGBmacro selects a red, green, blue (RGB) color based on the arguments supplied and the color capabilities of the output device.
COLORREF RGB( BYTE byRed, BYTE byGreen, BYTE byBlue );
The return value is the resultant RGB color as a
COLORREFvalue.
[3]byRed
The intensity of the red color.
byGreen
The intensity of the green color.
byBlue
The intensity of the blue color.
RGB
函数执行成功时返回由指定分量确定的颜色,用长整数表示。用于表示一个RGB(红绿蓝)颜色值.
RGB (RedAs Integer ,GreenAs Integer ,BlueAs Integer )
部分
描述
red
必要参数;Integer类型。数值范围从 0 到 255,表示颜色的红色成份。
green
必要参数;Integer类型。数值范围从 0 到 255,表示颜色的绿色成份。
blue
必要参数;Integer类型。数值范围从 0 到 255,表示颜色的蓝色成份。
注意: 如果其中有一个参数的值超过 255 ,不会显示任何错误,但这个参数会被当做 255。
可以接受颜色说明的应用程序的
方法和
属性期望这个说明是一个代表 RGB 颜色值的数值。一个 RGB 颜色值指定红、绿、蓝三原色的相对亮度,生成一个用于显示的特定颜色。
用法RGB()
函数使用下述公式计算表示颜色的长整数:65536 *Blue + 256 * Green+Red其中,Blue代表蓝色分量,Green代表绿色分量,Red代表红色分量。各分量中,数值越小,
亮度越低,数值越大,亮度越高。
黑色
0
0
0
蓝色
0
0
255
绿色
0
255
0
青色
0
255
255
红色
255
0
0
洋红色
255
0
255
黄色
255
255
0
白色
255
255
255
颜色选择器是指利用程序实现R、G、B三色的分配,来实现颜色的选择,利用颜色选择器可以选择出所有的颜色,总共有256*256*256种,同时可以实时的预览颜色,这就使得颜色的选择多种多样,并且非常方便。
转载于:https://www.cnblogs.com/Dennis-mi/p/3866636.html