常用的RGB格式

常用的RGB格式

RGB555

每个像素用16比特位表示,占2个字节,RGB分量都使用5位(最高位不用)。

//获取高字节的5个bit
R = color & 0x7C00;
//获取中间5个bit
G = color & 0x03E0;
//获取低字节5个bit
B = color & 0x001F;

常用的RGB格式_第1张图片

RGB1555

RGBA(ARGB)中的一种,一位用于表示透明度。0完全透明,1完全不透明

常用的RGB格式_第2张图片

RGB565

每个像素用16比特位表示,占2个字节,RGB分量分别使用5位、6位、5位。

//获取高字节的5个bit
R = color & 0xF800;
//获取中间6个bit
G = color & 0x07E0;
//获取低字节5个bit
B = color & 0x001F;

常用的RGB格式_第3张图片

RGB24格式

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

R = color & 0x000000FF,

G = color & 0x0000FF00,

B = color & 0x00FF0000,

常用的RGB格式_第4张图片

RGB32格式

RGB32图像每个像素用32比特位表示,占4个字节,R,G,B分量分别用8个bit表示,存储顺序为B,G,R,最后8个字节保留。

注意:在内存中RGB各分量的排列顺序为:BGRA BGRA BGRA …。 RGB32使用32位来表示一个像素,RGB分量各用去8位,剩下的8位用作Alpha通道或者不用。Alpha通道是一个8位的灰度通道,该通道用256级灰度来记录图像中的透明度信息,定义透明、不透明和半透明区域,其中白表示不透明,黑表示透明,灰表示半透明。其结构如下:

低8位为ALPHA值
R = color & 0x0000FF00;
G = color & 0x00FF0000;
B = color & 0xFF000000;
A = color & 0x000000FF;
低8位保留
R = color & 0x0000FF00
G = color & 0x00FF0000,
B = color & 0xFF000000,

常用的RGB格式_第5张图片

RGB与YUV的转换

转换公式

常用的RGB格式_第6张图片

RGB---->YUV

Y = 0.299 R + 0.587 G + 0.114 B

U = - 0.1687 R - 0.3313 G + 0.5 B + 128

V = 0.5 R - 0.4187 G - 0.0813 B + 128

YUV----->RGB

R = Y + 1.402 (Cr-128)

G = Y - 0.34414 (Cb-128) - 0.71414 (Cr-128)

B = Y + 1.772 (Cb-128)

你可能感兴趣的:(FFmpeg,音视频,linux,内核,power)