---
title: Convert
description: "该类接口可将图像像素值从一种数据类型转换为另一种数据类型。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/251RC1/accel/kunpengaccel_hmpp_06_0183.html
sourcePath: /source/zh/kunpengboostkithistory/251RC1/accel/kunpengaccel_hmpp_06_0183.html
indexId: 77c77f7e7d6cac0c051af13a2051c1da88428126c6f7312f0e0cb73cde0ac0ab77
---
# Convert

该类接口可将图像像素值从一种数据类型转换为另一种数据类型。

函数接口声明如下：

- 将无符号整型类型转为无符号整型类型：
  HmppResult HMPPI_Convert_8u16u_C1R(const uint8_t *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8u16u_C3R(const uint8_t *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8u16u_C4R(const uint8_t *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8u16u_AC4R(const uint8_t *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16u8u_C1R(const uint16_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16u8u_C3R(const uint16_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16u8u_C4R(const uint16_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16u8u_AC4R(const uint16_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16u32u_C1R(const uint16_t *src, int32_t srcStep, uint32_t *dst, int32_t dstStep, HmppiSize roiSize);

- 将无符号整型类型转为有符号整型类型：
  HmppResult HMPPI_Convert_8u16s_C1R(const uint8_t *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8u16s_C3R(const uint8_t *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8u16s_C4R(const uint8_t *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8u16s_AC4R(const uint8_t *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8u32s_C1R(const uint8_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8u32s_C3R(const uint8_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8u32s_C4R(const uint8_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8u32s_AC4R(const uint8_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16u32s_C1R(const uint16_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16u32s_C3R(const uint16_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16u32s_C4R(const uint16_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16u32s_AC4R(const uint16_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

- 将无符号整型类型转为浮点类型：
  HmppResult HMPPI_Convert_8u32f_C1R(const uint8_t *src, int32_t srcStep, float* dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8u32f_C3R(const uint8_t *src, int32_t srcStep, float* dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8u32f_C4R(const uint8_t *src, int32_t srcStep, float* dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8u32f_AC4R(const uint8_t *src, int32_t srcStep, float* dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16u32f_C1R(const uint16_t *src, int32_t srcStep, float *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16u32f_C3R(const uint16_t *src, int32_t srcStep, float *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16u32f_AC4R(const uint16_t *src, int32_t srcStep, float *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16u32f_C4R(const uint16_t *src, int32_t srcStep, float *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_32u32f_C1R(const uint32_t *src, int32_t srcStep, float *dst, int32_t dstStep, HmppiSize roiSize);

- 将有符号整型类型转为无符号整数类型：
  HmppResult HMPPI_Convert_8s8u_C1Rs(const int8_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8s16u_C1Rs(const int8_t *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8s32u_C1Rs(const int8_t *src, int32_t srcStep, uint32_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16s8u_C1R(const int16_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16s8u_C3R(const int16_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16s8u_C4R(const int16_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16s8u_AC4R(const int16_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16s16u_C1Rs(const int16_t *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16s32u_C1Rs(const int16_t *src, int32_t srcStep, uint32_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_32s8u_C1R(const int32_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_32s8u_C3R(const int32_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_32s8u_AC4R(const int32_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_32s8u_C4R(const int32_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_32s32u_C1Rs(const int32_t *src, int32_t srcStep, uint32_t *dst, int32_t dstStep, HmppiSize roiSize);

- 将有符号整型类型转为有符号整数类型：
  HmppResult HMPPI_Convert_8s16s_C1R(const int8_t *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8s32s_C1R(const int8_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8s32s_C3R(const int8_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8s32s_C4R(const int8_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8s32s_AC4R(const int8_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16s32s_C1R(const int16_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16s32s_C3R(const int16_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16s32s_AC4R(const int16_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16s32s_C4R(const int16_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_32s8s_C1R(const int32_t *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_32s8s_C3R(const int32_t *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_32s8s_AC4R(const int32_t *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_32s8s_C4R(const int32_t *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize);

- 将有符号整型类型转为浮点类型：
  HmppResult HMPPI_Convert_8s32f_C1R(const int8_t *src, int32_t srcStep, float* dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8s64f_C1R(const int8_t *src, int32_tsrcStep, double *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8s32f_C3R(const int8_t *src, int32_t srcStep, float* dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8s32f_C4R(const int8_t *src, int32_t srcStep, float* dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_8s32f_AC4R(const int8_t *src, int32_t srcStep, float* dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16s32f_C1R(const int16_t *src, int32_t srcStep, float *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16s32f_C3R(const int16_t *src, int32_t srcStep, float *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16s32f_AC4R(const int16_t *src, int32_t srcStep, float *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_16s32f_C4R(const int16_t *src, int32_t srcStep, float *dst, int32_t dstStep, HmppiSize roiSize);

  HmppResult HMPPI_Convert_32s32f_C1R(const int32_t *src, int32_t srcStep, float *dst, int32_t dstStep, HmppiSize roiSize);


- 将浮点数转为无符号整数类型：
  HmppResult HMPPI_Convert_32f8u_C1R(const float *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

  HmppResult HMPPI_Convert_32f8u_C3R(const float *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

  HmppResult HMPPI_Convert_32f8u_AC4R(const float *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

  HmppResult HMPPI_Convert_32f8u_C4R(const float *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

  HmppResult HMPPI_Convert_32f16u_C1R(const float *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

  HmppResult HMPPI_Convert_32f16u_C3R(const float *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

  HmppResult HMPPI_Convert_32f16u_AC4R(const float *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

  HmppResult HMPPI_Convert_32f16u_C4R(const float *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

- 将浮点数转为有符号整数类型：
  HmppResult HMPPI_Convert_32f8s_C1R(const float *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

  HmppResult HMPPI_Convert_32f8s_C3R(const float *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

  HmppResult HMPPI_Convert_32f8s_AC4R(const float *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

  HmppResult HMPPI_Convert_32f8s_C4R(const float *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

  HmppResult HMPPI_Convert_32f16s_C1R(const float *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

  HmppResult HMPPI_Convert_32f16s_C3R(const float *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

  HmppResult HMPPI_Convert_32f16s_AC4R(const float *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

  HmppResult HMPPI_Convert_32f16s_C4R(const float *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

- 带缩放的有符号整数之间的转换：
  HmppResult HMPPI_Convert_16s8s_C1R_S(const int16_t *src, int32_t srcStep, int8_t* dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

  HmppResult HMPPI_Convert_32s16s_C1R_S(const int32_t *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

- 带缩放的无符号整型之间的转换：
  HmppResult HMPPI_Convert_32u8u_C1R_S(const uint32_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

  HmppResult HMPPI_Convert_32u16u_C1R_S(const uint32_t *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

- 带缩放的有符号整数转为无符号整数：
  HmppResult HMPPI_Convert_32s16u_C1R_S(const int32_t *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

- 带缩放的无符号整数转为有符号整数：
  HmppResult HMPPI_Convert_8u8s_C1R_S(const uint8_t *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

  HmppResult HMPPI_Convert_16u8s_C1R_S(const uint16_t *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

  HmppResult HMPPI_Convert_16u16s_C1R_S(const uint16_t *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

  HmppResult HMPPI_Convert_32u8s_C1R_S(const uint32_t *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

  HmppResult HMPPI_Convert_32u16s_C1R_S(const uint32_t *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

  HmppResult HMPPI_Convert_32u32s_C1R_S(const uint32_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

- 带缩放的浮点数和整数之间的转换：
  HmppResult HMPPI_Convert_32f8u_C1R_S(const float *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

  HmppResult HMPPI_Convert_32f8s_C1R_S(const float *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

  HmppResult HMPPI_Convert_32f16u_C1R_S(const float *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

  HmppResult HMPPI_Convert_32f16s_C1R_S(const float *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

  HmppResult HMPPI_Convert_32f32u_C1R_S(const float *src, int32_t srcStep, uint32_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

  HmppResult HMPPI_Convert_32f32s_C1R_S(const float *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

  HmppResult HMPPI_Convert_64f8u_C1R_S(const double *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

  HmppResult HMPPI_Convert_64f8s_C1R_S(const double *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

  HmppResult HMPPI_Convert_64f16u_C1R_S(const double *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

  HmppResult HMPPI_Convert_64f16s_C1R_S(const double *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

- 带缩放的浮点数和无符号整数之间的原址转换：
  HmppResult HMPPI_Convert_32f32u_C1IR_S(uint32_t *srcDst, int32_t srcDstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);


#### 参数

| 参数名 | 描述 | 取值范围 | 输入/输出 |
| --- | --- | --- | --- |
| src | 指向源向量的指针。 | 非空 | 输入 |
| srcStep | 源图像中连续行起点之间的距离（以字节为单位）。 | (0, INT\_MAX] | 输入 |
| dst | 指向目的向量的指针。 | 非空 | 输出 |
| srcDst | 指向源图像感兴趣区域的指针。 | 非空 | 输入/输出 |
| dstStep | 目标图像中连续行的起点之间的距离（以字节为单位）。 | (0, INT\_MAX] | 输入 |
| srcDstStep | 源图像中连续行的起点之间的距离（以字节为单位）。 | 非负整数 | 输入 |
| roiSize | 源和目标图像感兴趣区域的大小（以像素为单位）。 | roiSize.width∈(0, INT\_MAX]，roiSize.height∈(0, INT\_MAX] | 输入 |
| scale | 比例因子。 | [INT\_MIN, INT\_MAX] | 输入 |
| roundMode | HMPP\_RND\_ZERO：指定将浮点值截断为零。 | 0 | 输入 |
| roundMode | HMPP\_RND\_NEAR：指定当小数部分等于0.5时，浮点值四舍五入为最接近的偶数整数；否则，浮点值四舍五入为最接近的整数。 | 1 | 输入 |
| roundMode | HMPP\_RND\_FINANCIAL：指定当小数部分小于0.5时，浮点值向下舍入为最接近的整数；如果小数部分等于或大于0.5，则向上舍入为最接近的整数。 | 2 | 输入 |


#### 返回值

- 成功：返回HMPP_STS_NO_ERR。
- 失败：返回错误码。


#### 错误码

| 错误码 | 描述 |
| --- | --- |
| HMPP\_STS\_NULL\_PTR\_ERR | src、dst这两个入参中存在空指针。 |
| HMPP\_STS\_SIZE\_ERR | roiSize的字段为零或负值。 |
| HMPP\_STS\_STEP\_ERR | srcStep、dstStep中存在零或负值。 |
| HMPP\_STS\_NOT\_EVEN\_STEP\_ERR | srcStep、dstStep不能被src、dst所属数据类型的字节长度整除的错误条件。 |
| HMPP\_STS\_NOT\_SUPPORTED\_MODE\_ERR | 输入模式为不支持的舍入模式。 |
| HMPP\_STS\_ROI\_ERR | roiSize.width > 步长。 |


#### 示例

```
#define SRC_BUFFER_SIZE_T 28
#define DST_BUFFER_SIZE_T 28
int ConvertExample(){
int32_t i;
HmppiSize roi = {5,4};
float dst[DST_BUFFER_SIZE_T] = {0.0f};
uint8_t src[SRC_BUFFER_SIZE_T] = { 1, 2, 4, 8, 16, 8, 4,
1, 2, 4, 8, 16, 8, 4,
1, 2, 4, 8, 16, 8, 4,
1, 2, 4, 8, 16, 8, 4,};
int32_t srcStep = 7 * sizeof(uint8_t);
int32_t dstStep = 7 * sizeof(float);
HmppResult result = HMPPI_Convert_8u32f_C1R(src, srcStep, dst, dstStep, roi);
printf("result = %d \ndst =", result);
for (i = 0; i < DST_BUFFER_SIZE_T; i++) {
printf(" %f  ", dst[i]);
}
return 0;
}
```

运行结果：

```
result = 0
dst = 1.000000  2.000000  4.000000  8.000000  16.000000  0.000000  0.000000  1.000000  2.000000  4.000000  8.000000  16.000000  0.000000  0.000000 1.000000  2.000000  4.000000  8.000000  16.000000  0.000000  0.000000 1.000000  2.000000  4.000000  8.000000  16.000000  0.000000  0.000000
```
