SetReferRect
Transpose
函数功能
可通过指定的一组轴维度(axes),对输入的Tensor数据进行转置处理,如未指定具体轴维度,则默认对Tensor数据进行反序转置。
该功能支持对输出数据进行内存复用,用户可通过预先申请的内存(内存大小需与输入一致)传入输出数据。
功能仅支持在Host侧执行操作,如需处理Device侧Tensor数据,请先通过ToHost接口,将Device侧数据转移到Host侧,再进行转置。
函数原型
friend APP_ERROR Transpose(const Tensor &input, Tensor &output, std::vector<uint32_t> axes = {})
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| input | 输入 | 待转置Tensor类。 维度支持2维、3维、4维,数据类型支持float32、float16、uint8。 |
| output | 输出 | 转置后的Tensor类。 |
| axes | 输入 | 转置选项,默认值为空。 如果未指定具体axes,则默认生成反序“axes”对“input”中的数据进行反序转置。 例如:三维张量默认生成反序“axes”为{2, 1, 0} 。 |
返回参数说明
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
父主题: Tensor
Clone
函数功能
原型1:
将Tensor进行深拷贝,返回拷贝后得到的Tensor。
- 如果Tensor在Host侧,拷贝过程均为同步操作。
- 如果Tensor在DVPP或Device侧,则需根据“stream”参数传入决定同步或异步操作, Tensor所在的Device需与stream所在的Device一致。
原型2:
将Tensor进行指定区域深拷贝,将src的区域内容拷贝到被赋值张量的区域,要求:
- src和被赋值Tensor均不能为空,被赋值Tensor的长宽尺寸为[64, 4096],src的最大高度不超过“1048576”,src总尺寸(N*H*W*C)不超过“67108864”。
- src和被赋值Tensor包含相同高宽的引用区域(ReferRect),且均不为0,ReferRect宽度不超过“1920”。
- src和被赋值Tensor数据类型支持uint8、float16,且类型需一致。
- src和被赋值Tensor仅支持NHWC、HWC和HW形状的Tensor(通道数为1或3,N为1),两者维度和通道数均需相等。
- src和被赋值Tensor需要在DVPP或Device侧。
- src和被赋值所在的Device需与stream所在的Device一致。
函数原型
// 原型1
Tensor Clone(AscendStream stream=AscendStream::DefaultStream()) const;
// 原型2
APP_ERROR Clone(const Tensor &src, AscendStream &stream = AscendStream::DefaultStream());
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| src | 输入 | 将src的引用指定区域赋值给执行该方法的张量的引用区域。 |
| stream | 输入 | AscendStream类型,默认值为AscendStream::DefaultStream()。当参数值为默认值时,接口为同步操作,其他情况下,接口为异步操作。 |
返回参数说明
原型1:
| 数据结构 | 说明 |
|---|---|
| Tensor | Tensor类,请参见Tensor。 |
原型2:
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
父主题: Tensor
SetTensorValue
函数功能
设置Tensor的值,支持int32_t、uint8_t、float16、float32类型。
Tensor对象需在Device侧且数据类型与调用的SetTensorValue方法匹配。
Tensor所在的Device需与stream所在的Device一致。
函数原型
APP_ERROR SetTensorValue(uint8_t value, AscendStream& stream = AscendStream::DefaultStream());
APP_ERROR SetTensorValue(float value, bool IsFloat16 = false, AscendStream& stream = AscendStream::DefaultStream());
APP_ERROR SetTensorValue(int32_t value, AscendStream& stream = AscendStream::DefaultStream());
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| value | 输入 | int32_t、uint8_t、float类型,指定Tensor待设置的值。 |
| isFloat16 | 输入 | bool类型,默认为“false”。 - 为“true”时表示设置Tensor元素为floa16类型。 - 为“false”时表示设置Tensor元素为floa32类型。 |
| stream | 输入 | AscendStream类型,默认值为AscendStream::DefaultStream()。当参数值为默认值时,接口为同步操作,其他情况下,接口为异步操作。 |
返回参数说明
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
父主题: Tensor
SetReferRect
函数功能
支持设置Tensor引用区域,支持NHWC(N=1)、HWC与HW维度,通道为1、3或4,引用区域的宽高不能超过原始图片。
函数原型
APP_ERROR SetReferRect(Rect rect);
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| rect | 输入 | 输入图像的坐标框,x0 < x1,y0 < y1。数据类型请参见Rect。 |
返回参数说明
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
父主题: Tensor
GetReferRect
函数功能
支持查询Tensor的引用区域。
函数原型
Rect GetReferRect() const;
参数说明
无
返回参数说明
| 数据结构 | 说明 |
|---|---|
| MxBase::Rect | Rect的数据类型,请参见Rect。 |
父主题: Tensor
CvtColor
函数功能
将Tensor的图像色域类型转换为指定的色域类型,支持以下类型间的转换。
GRAY转RGB和RGBA转mRGBA场景可通过预加载Split和Merge提高接口执行效率。该场景接口执行时,会在接口执行目录生成记录融合规则的“fusion_result.json”文件,该文件字段详细说明及融合规则开关配置可参考《CANN ATC工具使用指南》的“参数说明 > 高级功能参数 > 模型调优选项 > - > -fusion_switch_file”章节。
“outputTensor”若设置“keepMargin”为“true”,输出宽自动与16对齐。默认值为“false”,不保留Tensor中无效的边界区域。
当前Atlas 200I/500 A2 推理产品支持YUVSP420(nv12)转YUV400(GRAY)。
支持:
函数原型
APP_ERROR CvtColor(const Tensor &inputTensor, Tensor &outputTensor, const CvtColorMode &mode, bool keepMargin = false, AscendStream &stream = AscendStream::DefaultStream());
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputTensor | 输入 | Tensor类,输入张量,不可为空,需在Device/DVPP侧分配内存,数据类型为UINT8。 - 形状为 {高, 宽, 通道数} 的张量,通道数需要与输入格式一致。(说明:若 “inputTensor” 色域类型为YUVSP420或YVUSP420,设置输入张量形状时,高为图片显示高度的1.5倍。张量的高需要为3的倍数,宽为16的倍数,通道为1。 “inputTensor” 使用 SetValidRoi 接口设置有效区域时,其 y1 (对应张量的有效高度)需要为3的倍数,对应实际图片的有效高度为 y1 /3 * 2。) - 输入张量宽度范围为[10, 4096],高度范围为[6, 4096],若输入或输出张量格式包含YUV400、YUVSP420、YVUSP420、GRAY时,宽度范围为[18, 4096]。 - 如果是灰度图,支持形状为{高*宽}的张量。 |
| outputTensor | 输出 | Tensor类,输出张量。 若不为空,需在Device/DVPP侧分配内存且数据类型为UINT8。 |
| mode | 输入 | 枚举类值,对应色域转换的原始类型和目标类型。 text<br>enum class CvtColorMode {<br> COLOR_YUVSP4202GRAY = 0<br>};<br>若“mode”色域类型为“COLOR_BGR2YUVSP420”、“COLOR_RGB2YUVSP420”、“COLOR_RGB2YVUSP420”或COLOR_BGR2YVUSP420: - 建议输入的RGBTensor宽高为偶数,否则输出图片的边缘可能存在异常数据。 - 输出张量的高为输入张量高的1.5倍,例如,输入高为4096,输出的高则为6144,超过部分DVPP接口的限制,使用时需要注意是否满足后续业务需求。 |
| keepMargin | 输入 | 输出的outputTensor中是否保留Tensor中无效的边界区域。 当mode=COLOR_GRAY2RGB或mode=COLOR_RGBA2mRGBA时,该参数无效。 |
| stream | 输入 | AscendStream类型,默认值为“AscendStream::DefaultStream()”。当参数值为默认值时,接口为同步操作,其他情况下,接口为异步操作。 |
返回参数说明
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
父主题: TensorDvpp
Sift
函数功能
Sift类构造函数,作为图像尺度不变特征转换的实现类,主要开放特征点提取及计算接口。目前仅支持Atlas 200I A2 加速模块(20 TOPS,12GB)。
函数原型
Sift(int nFeatures = 0, int nOctaveLayers = 3, double contrastThreshold = 0.04, double edgeThreshold = 10, double sigma = 1.6, int descriptorType = CV_32F);// 构造失败时,会抛出std::runtime_error异常
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| nFeatures | 输入 | 提取特征点的排位,即对提取特征点排序,返回最佳的前“nFeatures”位(包含并列情况)。默认值为0,表示提取全部特征点。特征点识别数量需以实际返回结果为准。 |
| nOctaveLayers | 输入 | 尺度空间每组图像中的中间层数。默认值为3,目前仅支持默认值,如配置其他参数构造将会失败并抛出std::runtime_error异常。 - nOctaveLayers + 3为高斯金字塔每组图像中所包含的层数。 - nOctaveLayers + 2为差分金字塔每组图像中所包含的层数。 |
| contrastThreshold | 输入 | 特征点过滤阈值。默认值为0.04,取值范围为[0.0, 20.0]。 |
| edgeThreshold | 输入 | 边缘效应过滤阈值。默认值为10, 取值范围为[0.0, 1000.0]。 |
| sigma | 输入 | 初始模糊尺度,高斯金字塔第0层图像的高斯滤波系数。默认值为1.6,目前仅支持默认值,如配置其他参数构造将会失败并抛出std::runtime_error异常。 |
| descriptorType | 输入 | 特征描述符的数据类型。默认值为CV_32F,目前支持以下数据类型。 - CV_8U - CV_32F |
父主题: Sift
在线提单