Resize

函数功能

Tensor类的缩放接口,支持异步执行,使用该接口申请的Tensor内存无需用户管理,由内部管理释放。

相关使用流程请参考缩放

当前仅支持Atlas 推理系列产品Atlas 800I A2 推理服务器

函数原型

1
APP_ERROR Resize(const Tensor &src, Tensor &dst, const Size &resize, const Interpolation interpolation = Interpolation::BILINEAR_SIMILAR_OPENCV, bool keepMargin = false, AscendStream& stream = AscendStream::DefaultStream());

参数说明

参数名

输入/输出

说明

src

输入

Tensor类,输入张量,不可为空,需在Device/DVPP侧分配内存,维度要求HW、HWC(c=1, 3, 4)。

  • Atlas 800I A2 推理服务器上,支持数据类型unit8;在Atlas 推理系列产品上,支持数据类型unit8和float16。
  • 真实分辨率范围:10 * 6 ~ 4096 * 4096。
  • 输入张量宽度范围为[10, 4096],高度范围为[6, 4096],若输入或输出张量格式为“YUV400”时,宽度范围为[18, 4096]。

dst

输出

Tensor类,输出张量,在Atlas 800I A2 推理服务器上,支持数据类型unit8;在Atlas 推理系列产品上,支持数据类型unit8和float16。

支持传入空Tensor,如果不为空,形状必须与缩放后宽高相同,需要调用Tensor.Malloc()接口提前分配内存,数据内存必须在Device侧(与“src”同一个Device)或DVPP侧。

resize

输入

输入Tensor缩放的宽高。Size结构体说明请参见Size

最大分辨率:4096 * 4096,最小分辨率:10 * 6,输入图像格式为YUV_400时,最小分辨率为18 * 6。

缩放后图片的宽高不能超出真实图片的[1/32 ,32]倍数区间。如果输入Tensor设置了有效区域,缩放后图片的宽高不能超出有效区域的[1/32 ,32]倍数区间。

interpolation

输入

输入Tensor的缩放方式,可选参数参见如下。

1
2
3
HUAWEI_HIGH_ORDER_FILTER = 0
BILINEAR_SIMILAR_OPENCV = 1
NEAREST_NEIGHBOR_OPENCV = 2
支持以下算法(默认为1)。
  • 0、1:业界通用的Bilinear算法(与OpenCV算法的计算过程类似,当输入和输出图片格式都为RGB时,在[1/32, 32]的缩放范围内,与OpenCV算法的单个像素值最大差异为正负1)。
  • 2:业界通用的Nearest neighbor算法(与OpenCV算法的计算过程类似。)

keepMargin

输入

输出的“dst”中是否保留Tensor中无效的边界区域。

默认值为“false”,表示不保留Tensor中无效的边界区域,即输出Tensor宽高与缩放参数宽高一致;若设置“keepMargin”“true”,输出宽自动与16对齐(在Atlas 推理系列产品上输入非RGBA格式图片时,该参数不生效)。

stream

输入

输入用于异步执行的Stream,默认为“AscendStream::DefaultStream()”,表示创建一个默认流(即同步执行)。

返回参数说明

数据结构

说明

APP_ERROR

程序执行返回的错误码,请参考APP_ERROR说明