图像 rgb yuv android,图像实战 - RGB、YUV图像格式介绍

ArcFace 2.0 API目前支持多种图像格式:BGR24、NV21、NV12、I420、YUYV(Android、IOS只支持其中的部分)。以下介绍这几种图像格式的内存排列方式。

一、相关图像颜色空间介绍

1. RGB颜色空间

RGB颜色空间以Red、Green、Blue三种基本色为基础,进行不同程度的叠加,产生丰富而广泛的颜色,所以俗称三基色模式。

常见的RGB格式有:RGB_565、RGB_888、ARGB_8888、ARGB_4444等。

但是,安卓的同学们注意了,谷歌挖了个坑:

ARGB_8888和ARGB_4444实际上在底层对应的是 RGBA_8888和RGBA_4444,例如ARGB_8888图像,其像素数据在内存中其实是以R G B A R G B A ...的顺序排布的。

Bitmap.java中的内容

public static enum Config {

ALPHA_8,

RGB_565,

/** @deprecated */

@Deprecated

ARGB_4444,

ARGB_8888,

RGBA_F16,

HARDWARE;

private Config() {

}

}

Bitmap.h中的内容

/** Bitmap pixel format. */

enum AndroidBitmapFormat {

/** No format. */

ANDROID_BITMAP_FORMAT_NONE = 0,

/** Red: 8 bits, Green: 8 bits, Blue: 8 bits, Alpha: 8 bits. **/

ANDROID_BITMAP_FORMAT_RGBA_8888 = 1,

/** Red: 5 bits, Green: 6 bits, Blue: 5 bits. **/

ANDROID_BITMAP_FORMAT_RGB_565 = 4,

/** Deprecated in API level 13. Because of the poor quality of this configuration, it is advised to use ARGB_8888 instead. **/

ANDROID_BITMAP_FORMAT_RGBA_4444 = 7,

/** Alpha: 8 bits. */

ANDROID_BITMAP_FORMAT_A_8 = 8,

};

2. YUV颜色空间

在YUV颜色空间中,Y用来表示亮度,U和V用来表示色度。

常见的YUV格式有以下几大类:

planar: Y、U、V全部连续存储,如I420、YV12,即3个plane

packed: Y、U、V交叉存储,如YUYV,即1个plane

semi-planar: Y连续存储,U、V交叉存储,如NV21、NV12,即2个plane

二、相关图像格式介绍

1. BGR24图像格式

BGR24图像格式是一种采用24bpp(bit per pixel)的格式。每个颜色通道B、G、R各占8bpp。

排列方式如:

B G R   B G R   B G R   B G R   B G R   B G R   B G R   B G R

B G R   B G R   B G R   B G R   B G R   B G R   B G R   B G R

B G R   B G R   B G R   B G R   B G R   B G R   B G R   B G R

B G R   B G R   B G R   B G R   B G R   B G R   B G R   B G R

2. NV21图像格式

NV21图像格式属于 YUV颜色空间中的YUV420SP格式,每四个Y分量共用一组U分量和V分量,Y连续排序,U与V交叉排序。

排列方式如:

Y Y   Y Y   Y Y   Y Y

Y Y   Y Y   Y Y   Y Y

Y Y   Y Y   Y Y   Y Y

Y Y   Y Y   Y Y   Y Y

V U   V U   V U  V U

V U   V U   V U  V U

3. NV12图像格式

NV12图像格式属于 YUV颜色空间中的YUV420SP格式,每四个Y分量共用一组U分量和V分量,Y连续排序,U与V交叉排序(NV12和NV21只是U与V的位置相反)。

排列方式如:

Y Y   Y Y   Y Y   Y Y

Y Y   Y Y   Y Y   Y Y

Y Y   Y Y   Y Y   Y Y

Y Y   Y Y   Y Y   Y Y

U V   U V   U V  U V

U V   U V   U V  U V

4. I420图像格式

I420图像格式属于 YUV颜色空间中的YUV420P格式,每四个Y分量共用一组U分量和V分量,Y、U、V各自连续排序。

排列方式如:

Y Y   Y Y   Y Y   Y Y

Y Y   Y Y   Y Y   Y Y

Y Y   Y Y   Y Y   Y Y

Y Y   Y Y   Y Y   Y Y

U  U  U  U

U  U  U  U

V  V  V  V

V  V  V  V

5. YV12图像格式

YV12图像格式属于 YUV颜色空间中的YUV420P格式,每四个Y分量共用一组U分量和V分量,Y、U、V各自连续排序(YV12和I420只是U与V的位置相反)。

排列方式如:

Y Y   Y Y   Y Y   Y Y

Y Y   Y Y   Y Y   Y Y

Y Y   Y Y   Y Y   Y Y

Y Y   Y Y   Y Y   Y Y

V  V  V  V

V  V  V  V

U  U  U  U

U  U  U  U

6. YUYV图像格式

YUYV图像格式属于 YUV颜色空间中的YUV422格式,每两个Y分量共用一组U分量和V分量,Y、U、V交叉排序。

排列方式如:

Y U Y V   Y U Y V   Y U Y V   Y U Y V

Y U Y V   Y U Y V   Y U Y V   Y U Y V

Y U Y V   Y U Y V   Y U Y V   Y U Y V

Y U Y V   Y U Y V   Y U Y V   Y U Y V

你可能感兴趣的:(图像,rgb,yuv,android)