ResizeNearest
用于调整图像大小,使用最近邻插值算法,属于图像几何变换的一类功能。
在调用ResizeNearest函数之前需要先调用Init函数进行初始化,然后调用ResizeLinear主功能函数,最后调用Release函数释放相关空间。
函数接口声明如下:
- 初始化函数:
HmppResult HMPPI_ResizeNearestInit_32f(HmppiSize srcSize, HmppiSize dstSize, HmppiResizePolicy_32f **pSpec);
- 主函数:
HmppResult HMPPI_ResizeNearest_32f_C1R(const float *pSrc, int srcStep, float *pDst, int dstStep, HmppiPoint dstOffset, HmppiSize dstSize, const HmppiResizePolicy_32f *pSpec);
- 释放函数:
HmppResult HMPPI_ResizeNearestRelease_32f(HmppiResizePolicy_32f *policy);
参数
参数名 |
描述 |
取值范围 |
输入/输出 |
|---|---|---|---|
pSrc |
指向源图像感兴趣区域的指针。 |
非空 |
输入 |
srcStep |
源图像中连续行起点之间的距离(以字节为单位)。 |
非负整数 |
输入 |
srcSize |
源图像块的大小。 |
正整数 |
输入 |
pDst |
指向目标图像感兴趣区域的指针。 |
非空 |
输入/输出 |
dstStep |
目标图像中连续行的起点之间的距离(以字节为单位)。 |
非负整数 |
输入 |
dstOffset |
目标图像块的偏移值。 |
非负整数 |
输入 |
dstSize |
目标图像块的大小。 |
正整数 |
输入 |
pSpec |
特殊结构体的指针。 |
非空 |
输入/输出 |
返回值
- 成功:返回HMPP_STS_NO_ERR。
- 失败:返回错误码。
错误码
错误码 |
描述 |
|---|---|
HMPP_STS_NO_OPERATION |
告警,不进行操作。srcSize和dstSize中width、height存在零。 |
HMPP_STS_NULL_PTR_ERR |
传入的任意一个指针存在空指针。 |
HMPP_STS_MALLOC_FAILED |
pSpec初始化时内存申请失败。 |
HMPP_STS_SIZE_ERR |
srcSize和dstSize中width、height存在负值。 |
HMPP_STS_STEP_ERR |
|
HMPP_STS_BORDER_ERR |
边界算法类型不支持。 |
HMPP_STS_OUT_OF_RANGE_ERR |
目标图像块偏移值比Init函数输入的目标图像块的width或height大。 |
HMPP_STS_SIZE_WRN |
目标图像块width/height比Init函数输入的目标图像块的width或height大。 |
示例
void ResizeNearestExample()
{
HmppiSize srcSize = {3, 3};
HmppiSize dstSize = {6, 6};
HmppiPoint dstOffset = {0, 0};
int srcStep = srcSize.width * sizeof(float);
int dstStep = dstSize.width * sizeof(float);
HmppiResizePolicy_32f *pSpec;
float pSrc[] = {0.0, 255.0, 3.0, 6.0, 255.0, 0.0, 2.0, 1.0, 3.0};
int dstLen = dstSize.width * dstSize.height;
float *pDst = HMPPS_Malloc_32f(dstLen);
HMPPI_ResizeNearestInit_32f(srcSize, dstSize, &pSpec);
HmppResult result = HMPPI_ResizeNearest_32f_C1R (
pSrc, srcStep, pDst, dstStep, dstOffset, dstSize, &pSpec);
printf("result = %d\n", result);
if (result != HMPP_STS_NO_ERR) {
return;
}
for (int i = 0; i < dstLen; i++){
printf("%f ", pDst[i]);
}
printf("\n");
HMPPI_ResizeNearestRelease_32f(pSpec);
}
运行结果:
result = 0 0.000000 255.000000 255.000000 3.000000 3.000000 0.000000 6.000000 255.000000 255.000000 0.000000 0.000000 0.000000 6.000000 255.000000 255.000000 0.000000 0.000000 0.000000 2.000000 1.000000 1.000000 3.000000 3.000000 0.000000 2.000000 1.000000 1.000000 3.000000 3.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000