鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

ScaleC

缩放图像的像素值并将其转换为另一个位深度。

函数接口声明如下:

HmppResult HMPPI_ScaleC_8u_C1R(const uint8_t *src, int32_t srcStep, double mVal, double aVal, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8u8s_C1R(const uint8_t *src, int32_t srcStep, double mVal, double aVal, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8u16u_C1R(const uint8_t *src, int32_t srcStep, double mVal, double aVal, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8u16s_C1R(const uint8_t *src, int32_t srcStep, double mVal, double aVal, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8u32s_C1R(const uint8_t *src, int32_t srcStep, double mVal, double aVal, int32_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8u32f_C1R(const uint8_t *src, int32_t srcStep, double mVal, double aVal, float *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8u64f_C1R(const uint8_t *src, int32_t srcStep, double mVal, double aVal, double *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8s8u_C1R(const int8_t *src, int32_t srcStep, double mVal, double aVal, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8s_C1R(const int8_t *src, int32_t srcStep, double mVal, double aVal, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8s16u_C1R(const int8_t *src, int32_t srcStep, double mVal, double aVal, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8s16s_C1R(const int8_t *src, int32_t srcStep, double mVal, double aVal, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8s32s_C1R(const int8_t *src, int32_t srcStep, double mVal, double aVal, int32_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8s32f_C1R(const int8_t *src, int32_t srcStep, double mVal, double aVal, float *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8s64f_C1R(const int8_t *src, int32_t srcStep, double mVal, double aVal, double *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16u8u_C1R(const uint16_t *src, int32_t srcStep, double mVal, double aVal, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16u8s_C1R(const uint16_t *src, int32_t srcStep, double mVal, double aVal, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16u_C1R(const uint16_t *src, int32_t srcStep, double mVal, double aVal, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16u16s_C1R(const uint16_t *src, int32_t srcStep, double mVal, double aVal, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16u32s_C1R(const uint16_t *src, int32_t srcStep, double mVal, double aVal, int32_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16u32f_C1R(const uint16_t *src, int32_t srcStep, double mVal, double aVal, float *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16u64f_C1R(const uint16_t *src, int32_t srcStep, double mVal, double aVal, double *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16s8u_C1R(const int16_t *src, int32_t srcStep, double mVal, double aVal, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16s8s_C1R(const int16_t *src, int32_t srcStep, double mVal, double aVal, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16s16u_C1R(const int16_t *src, int32_t srcStep, double mVal, double aVal, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16s_C1R(const int16_t *src, int32_t srcStep, double mVal, double aVal, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16s32s_C1R(const int16_t *src, int32_t srcStep, double mVal, double aVal, int32_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16s32f_C1R(const int16_t *src, int32_t srcStep, double mVal, double aVal, float *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16s64f_C1R(const int16_t *src, int32_t srcStep, double mVal, double aVal, double *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32s8u_C1R(const int32_t *src, int32_t srcStep, double mVal, double aVal, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32s8s_C1R(const int32_t *src, int32_t srcStep, double mVal, double aVal, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32s16u_C1R(const int32_t *src, int32_t srcStep, double mVal, double aVal, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32s16s_C1R(const int32_t *src, int32_t srcStep, double mVal, double aVal, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32s_C1R(const int32_t *src, int32_t srcStep, double mVal, double aVal, int32_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32s32f_C1R(const int32_t *src, int32_t srcStep, double mVal, double aVal, float *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32s64f_C1R(const int32_t *src, int32_t srcStep, double mVal, double aVal, double *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32f8u_C1R(const float *src, int32_t srcStep, double mVal, double aVal, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32f8s_C1R(const float *src, int32_t srcStep, double mVal, double aVal, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32f16u_C1R(const float *src, int32_t srcStep, double mVal, double aVal, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32f16s_C1R(const float *src, int32_t srcStep, double mVal, double aVal, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32f32s_C1R(const float *src, int32_t srcStep, double mVal, double aVal, int32_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32f_C1R(const float *src, int32_t srcStep, double mVal, double aVal, float *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32f64f_C1R(const float *src, int32_t srcStep, double mVal, double aVal, double *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_64f8u_C1R(const double *src, int32_t srcStep, double mVal, double aVal, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_64f8s_C1R(const double *src, int32_t srcStep, double mVal, double aVal, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_64f16u_C1R(const double *src, int32_t srcStep, double mVal, double aVal, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_64f16s_C1R(const double *src, int32_t srcStep, double mVal, double aVal, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_64f32s_C1R(const double *src, int32_t srcStep, double mVal, double aVal, int32_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_64f32f_C1R(const double *src, int32_t srcStep, double mVal, double aVal, float *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_64f_C1R(const double *src, int32_t srcStep, double mVal, double aVal, double *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8u_C1IR(uint8_t *srcDst, int32_t srcDstStep, double mVal, double aVal, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8s_C1IR(int8_t *srcDst, int32_t srcDstStep, double mVal, double aVal, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16u_C1IR(uint16_t *srcDst, int32_t srcDstStep, double mVal, double aVal, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16s_C1IR(int16_t *srcDst, int32_t srcDstStep, double mVal, double aVal, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32s_C1IR(int32_t *srcDst, int32_t srcDstStep, double mVal, double aVal, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32f_C1IR(float *srcDst, int32_t srcDstStep, double mVal, double aVal, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_64f_C1IR(double *srcDst, int32_t srcDstStep, double mVal, double aVal, HmppiSize roiSize, HmppHintAlgorithm hint);

参数

参数名

描述

取值范围

输入/输出

src

指向源图像感兴趣区域的指针。

非空

输入

srcStep

源图像中连续行起点之间的距离(以字节为单位)。

非负整数

输入

dst

指向目标图像感兴趣区域的指针。

非空

输入、输出

dstStep

目标图像中连续行的起点之间的距离(以字节为单位)。

非负整数

输入

srcDst

指向源和目标缓冲区的指针。

非空

输入、输出

srcDstStep

源图像和目标图像中连续行的起点之间的距离。

非负整数

输入

mVal

用于缩放的乘数值。

双精度取值范围

输入

aVal

缩放的偏移值。

双精度取值范围

输入

hint

函数的算法实现方式。

0或2

输入

roiSize

源和目标图像感兴趣区域的大小(以像素为单位)。

非负整数

输入

返回值

  • 成功:返回HMPP_STS_NO_ERR
  • 失败:返回错误码。

错误码

错误码

描述

HMPP_STS_NULL_PTR_ERR

src,dst中存在空指针。

HMPP_STS_SIZE_ERR

roiSize的字段为零或负值。

HMPP_STS_STEP_ERR

srcStep,dstStep中存在零或负值。

HMPP_STS_ROI_ERR

roiSize的width与通道数乘积大于步长srcStep。

HMPP_STS_NOT_EVEN_STEP_ERR

srcStep/dstStep不能被src/dst所属数据类型的字节长度整除的错误。

HMPP_STS_BAD_ARG_ERR

hint != 0且hint != 2时的返回值,表示算法模式入参不合法。

HMPP_STS_NO_ERR

返回值正确,任何其他值表示错误或警告。

示例

#include <stdio.h>
#include "hmppi.h"
#include "hmpp_type.h"

void ScaleCExample()
{
    HmppiSize roi = {5, 7};

    uint8_t src[45] = {1, 2, 3, 4, 5,
                       1, 2, 3, 4, 5,
                       1, 2, 3, 4, 5,
                       1, 2, 3, 4, 5,
                       1, 2, 3, 4, 5,
                       1, 2, 3, 4, 5,
                       1, 2, 3, 4, 5,
                       1, 2, 3, 4, 5,
                       1, 2, 3, 4, 5
                      };
    uint8_t dst[49] = {0};
    int32_t srcStep = 5 * sizeof(uint8_t);
    int32_t dstStep = 7 * sizeof(uint8_t);
    double aVal = 0.5;
    double mVal = 0.5;
    HmppHintAlgorithm hint = HMPP_ALGHINT_ACCURATE;

    (void)HMPPI_ScaleC_8u_C1R(src, srcStep, mVal, aVal, dst, dstStep, roi, hint);

    for (int i = 0; i < 7; i++) {
        for (int j = 0; j < 7; j++) {
            printf("%d ", dst[i * 7 + j]);
        }
        printf("\n");
    }
}

int main()
{
    ScaleCExample();
    return 0;
}

运行结果:

1 2 2 2 3 0 0
1 2 2 2 3 0 0
1 2 2 2 3 0 0
1 2 2 2 3 0 0
1 2 2 2 3 0 0
1 2 2 2 3 0 0
1 2 2 2 3 0 0