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

CopyConstBorder

在两个图像之间复制像素值,并添加固定值边界框像素。

函数接口声明如下:

HmppResult HMPPI_CopyConstBorder_32f_C1R(const float *src, int32_t srcStep, HmppiSize srcRoiSize, float *dst, int32_t dstStep, HmppiSize dstRoiSize, int32_t topBorderHeight, int32_t leftBorderWidth, float value);

HmppResult HMPPI_CopyConstBorder_8u_C1R(const uint8_t *src, int32_t srcStep, HmppiSize srcRoiSize, uint8_t *dst, int32_t dstStep, HmppiSize dstRoiSize, int32_t topBorderHeight, int32_t leftBorderWidth, uint8_t value);

参数

参数名

描述

取值范围

输入/输出

src

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

非空

输入

srcStep

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

非负整数

输入

dst

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

非空

输出

dstStep

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

非负整数

输入

srcDst

指向源和目标图像感兴趣区域的指针(用于原地操作)。

非空

输入/输出

srcDstStep

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

非负整数

输入

srcRoiSize

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

srcRoiSize.width∈(0, INT_MAX],srcRoiSize.height∈(0, INT_MAX]

输入

dstRoiSize

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

dstRoiSize.width∈(0, INT_MAX],dstRoiSize.height∈(0, INT_MAX]

输入/输出

topBorderHeight

顶部边框的高度(以像素为单位)。

非负整数

输入

leftBorderWidth

左边框的宽度(以像素为单位)。

非负整数

输入

value

边界框像素的值。

输入数据类型的范围

输入

返回值

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

错误码

错误码

描述

HMPP_STS_NULL_PTR_ERR

src、dst任一入参中存在空指针。

HMPP_STS_SIZE_ERR

srcRoiSize或dstRoiSize为零或负值。

HMPP_STS_STEP_ERR

srcStep、dstStep中存在零或负值。

HMPP_STS_NOT_EVEN_STEP_ERR

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

HMPP_STS_ROI_ERR

srcRoiSize.width > 步长或dstRoiSize.width > 步长。

示例

#include <stdio.h>
#include "hmppi.h"
#include "hmpp_type.h"
#define SRC_BUFFER_SIZE_T 12
#define DST_BUFFER_SIZE_T 132
int CopyConstBorderExample()
{
    HmppiSize roiSrc = {3,4};
    uint8_t src[SRC_BUFFER_SIZE_T] = { 1, 2, 3,  
                                      2, 3, 4, 
                                      3, 4, 5,  
                                      4, 5, 6 };
    uint8_t dst[DST_BUFFER_SIZE_T] = {0};
    int32_t srcStep = 3 * sizeof(uint8_t);
    int32_t dstStep = 11 * sizeof(uint8_t);
    HmppiSize roiDst = {11,12};
    int32_t topBorderHeight = 4;
    int32_t leftBorderWidth = 4;
    uint8_t value = 255;
    HmppResult result = HMPPI_CopyConstBorder_8u_C1R(src, srcStep, roiSrc, dst, dstStep, roiDst, topBorderHeight, leftBorderWidth, value);
    printf("result = %d \ndst = \n", result);
    if (result != HMPP_STS_NO_ERR) {
        printf("result error: %d\n", result);
    }
    int32_t dstWidth = dstStep / sizeof(uint8_t);
    for (int32_t i = 0; i < 12; i++){
        for (int32_t j = 0; j < 11; j++){
            printf("%3d ",dst[i*11+j]);
        }
        printf("\n");
    }
    return 0;
}
int main() {
    CopyConstBorderExample();
    return 0;
}

运行结果:

result = 0 
dst = 
255 255 255 255 255 255 255 255 255 255 255 
255 255 255 255 255 255 255 255 255 255 255 
255 255 255 255 255 255 255 255 255 255 255 
255 255 255 255 255 255 255 255 255 255 255 
255 255 255 255   1   2   3 255 255 255 255 
255 255 255 255   2   3   4 255 255 255 255 
255 255 255 255   3   4   5 255 255 255 255 
255 255 255 255   4   5   6 255 255 255 255 
255 255 255 255 255 255 255 255 255 255 255 
255 255 255 255 255 255 255 255 255 255 255 
255 255 255 255 255 255 255 255 255 255 255 
255 255 255 255 255 255 255 255 255 255 255