将图像模型由YCbCrI格式转换为RGB或者BGR格式。计算公式如下:
,
,
,
,
,
,其中clamp表示限定值在[0, 255]。
函数接口声明如下:
HmppResult HMPPI_YCbCrI420ToRGB24_8u(const uint8_t *src, uint8_t *dst, int32_t width, int32_t height);
HmppResult HMPPI_YCbCrI420ToBGR24_8u(const uint8_t *src, uint8_t *dst, int32_t width, int32_t height);
参数名 |
描述 |
取值范围 |
输入/输出 |
---|---|---|---|
src |
指向源向量的指针。 |
非空 |
输入 |
dst |
指向目的向量的指针。 |
非空 |
输出 |
width |
图像宽度(按像素计算)。 |
(0, INT_MAX],可被2整除 |
输入 |
height |
图像高度(按像素计算)。 |
(0, INT_MAX],可被2整除 |
输入 |
错误码 |
描述 |
---|---|
HMPP_STS_NULL_PTR_ERR |
src、dst这两个入参中存在空指针。 |
HMPP_STS_SIZE_ERR |
width、height这两个入参中存在值小于或等于0。 |
HMPP_STS_DOUBLE_SIZE_ERR |
width、height这两个入参中存在值不是2的倍数。 |
#define SRC_BUFFER_SIZE_T 6 #define DST_BUFFER_SIZE_T 12 int YcbcrToRgbExample(){ int32_t i; uint8_t dst[DST_BUFFER_SIZE_T] = {0}; uint8_t src[SRC_BUFFER_SIZE_T] = {0, 255, 5, 34, 122, 78}; HmppResult result = HMPPI_YCbCrI420ToRGB24_8u(src, dst, 2, 2); printf("result = %d \ndst =", result); for (i = 0; i < DST_BUFFER_SIZE_T; i++) { printf(" %d ", dst[i]); } return 0; }
运行结果:
result = 0 dst = 0 24 0 199 255 255 0 30 0 0 64 9