CropResize
函数功能
Tensor类的抠图并缩放接口,支持异步执行,使用该接口申请的Tensor内存无需用户管理,由内部管理释放。
当前仅支持Atlas 推理系列产品。
- 输入输出Tensor类支持的图像格式为YUV_400、RGB_888,其中输入分辨率不超过(4096 * 4096)。
- “inputTensor”的真实图片宽高大小范围:10 * 6 ~ 4096 * 4096,若输入或输出张量格式为YUV_400时,宽度范围为[18, 4096]。
- 抠图区域不能超出输入图片的真实图片宽高,抠图区域最大分辨率为4096 * 4096。
- 输入图像格式为“RGB_888”时,抠图区域最小分辨率为10 * 6。
- 输入图像格式为“YUV_400”时,抠图区域最小分辨率为18 * 6。
- 缩放的范围为10 * 6 ~ 4096 * 4096,当输入图像格式为YUV_400时,最小分辨率为18 * 6,缩放范围不能超出抠图区域的[1/32, 16]倍数区间。
- 抠图区域数量不能大于256,抠图区域数量、缩放范围数量、输出tensor数量三者必须相等。
- 输出“outputTensorVec”中,若设置“keepMargin”参数为“true”,输出Tensor的宽自动与16对齐。“keepMargin”参数默认值为“false”,不保留Tensor中无效的边界区域,即输出Tensor宽高与缩放参数一致。
- 支持传入空vector,vector不能有空Tensor。如果输入Tensor设置了有效区域,则抠图的区域需要在有效区域内,否则会造成抠图失败。
函数原型
APP_ERROR CropResize(const Tensor &inputTensor, const std::vector<Rect> &cropRectVec, const std::vector<Size> &sizeVec, std::vector<Tensor> &outputTensorVec, const Interpolation interpolation = Interpolation::BILINEAR_SIMILAR_OPENCV, bool keepMargin = false, AscendStream& stream = AscendStream::DefaultStream());
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
inputTensor |
输入 |
Tensor类,输入张量,不可为空,需在Device/DVPP侧分配内存,数据类型为UINT8。 输入张量宽度范围为[10, 4096],高度范围为[6, 4096],若输入或输出张量格式包含“YUV400”时,宽度范围为[18, 4096]。 |
cropRectVec |
输入 |
输入抠图参数(Rect类)列表,需要与输出Tensor列表的元素个数一致。 |
sizeVec |
输入 |
输入缩放参数(Size类)列表,需要与输出Tensor列表的元素个数一致。 |
outputTensorVec |
输出 |
输出抠图并缩放后的Tensor类列表。 |
interpolation |
输入 |
输入Tensor的缩放方式,可选参数参见如下。 HUAWEI_HIGH_ORDER_FILTER = 0 BILINEAR_SIMILAR_OPENCV = 1 NEAREST_NEIGHBOR_OPENCV = 2
|
keepMargin |
输入 |
输出的“outputTensor”中是否保留Tensor中无效的边界区域。 默认值为“false”,表示不保留Tensor中无效的边界区域,即输出Tensor宽高与缩放参数宽高一致。 |
stream |
输入 |
输入用于异步执行的Stream,默认为“AscendStream::DefaultStream()”,表示创建一个默认流(即同步执行)。 |
返回参数说明
数据结构 |
说明 |
---|---|
APP_ERROR |
程序执行返回的错误码,请参考APP_ERROR说明。 |
父主题: TensorOperations