zoukankan      html  css  js  c++  java
  • 音视频入门-01-认识RGB

    * 音视频入门文章目录 *

    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像素数据处理

    内容有误?联系作者:
    联系作者


  • 相关阅读:
    深度学习笔记之关于基本思想、浅层学习、Neural Network和训练过程(三)
    深度学习笔记之关于特征(二)
    深度学习笔记之概述、背景和人脑视觉机理(一)
    初步认识深度学习笔记(一)
    EM(期望最大化)算法初步认识
    Ubuntu16.04下安装Tensorflow GPU版本(图文详解)
    Ubuntu16.04下安装Tensorflow CPU版本(图文详解)
    [转]粤语学习
    [转]微信公众平台开发(十) 消息回复总结
    [转]C#开发微信公众平台-就这么简单
  • 原文地址:https://www.cnblogs.com/binglingziyu/p/audio-video-basic-01-rgb-intro.html
Copyright © 2011-2022 走看看