基础组件层
MemoryHelper
类说明
该类负责Host侧和Device侧内存的管理:分配、初始化、移动和释放。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
Atlas 800I A2推理产品
CheckDataSize
检测MemoryData对象内存大小是否符合要求。内存大小不允许为0字节。
static APP_ERROR MemoryHelper::CheckDataSize(long size);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| size | 输入 | MemoryData对象内存大小,检查范围为[1, 4294967296],单位:字节。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
CheckDataSizeAllowZero
检测MemoryData对象内存大小是否符合要求。内存大小允许为0字节。
static APP_ERROR MemoryHelper::CheckDataSizeAllowZero(long size);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| size | 输入 | MemoryData对象内存大小,检查范围为[0, 4294967296],单位:字节。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
MakeShared
使用std::make_shared创建对象,创建失败时返回空指针。
template<typename T, typename... Args>
static std::shared_ptr<T> MakeShared(Args && ... args);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| T | 输入 | 对象类名。 |
| args | 输入 | 创建的T对象构造函数参数。 |
| 数据结构 | 说明 |
|---|---|
| std::shared_ptr | 创建的指针对象。 |
MxbsFree
[!NOTICE] 当采用该API进行内存销毁时,需要确保待销毁的内存未被手动执行free等销毁函数,否则可能出现double free的情况。
释放指定内存。
static APP_ERROR MemoryHelper::MxbsFree(MemoryData& data);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| data | 输入 | 待释放的内存数据。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
MxbsMalloc
内存分配函数,通过给MemoryData结构体type赋值,确定内存是Host、Device或者DVPP。通过MemoryData中的size,指定内存大小。通过MemoryData中的deviceId,指定Device内存ID。需要销毁申请的内存时,用户自行搭配MxbsFree函数进行销毁。
static APP_ERROR MemoryHelper::MxbsMalloc(MemoryData& data);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| data | 输入 | 待分配的内存数据。其输入是内存的类型和大小,分别赋值到data.type , data.size,输出是分配的内存指针,赋值到data.ptrData。data.size取值范围为[1, 4294967296]。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
MxbsMallocAndCopy
内存复制函数,根据MemoryData中指定的内存位置在Host侧和Device侧之间进行dest内存申请及复制。
static APP_ERROR MemoryHelper::MxbsMallocAndCopy(MemoryData& dest, const MemoryData& src);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| dest | 输入 | 待复制的目标内存。 |
| src | 输入 | 待复制的源内存。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
MxbsMemcpy
内存复制函数,根据MemoryData中指定的内存位置在Host侧和Device侧之间进行复制。
Note
由于Memcpy和系统函数重名,建议优先使用MxbsMemcpy函数。
static APP_ERROR MemoryHelper::MxbsMemcpy (MemoryData& dest, const MemoryData& src, size_t count);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| dest | 输入 | 待复制的目标内存。dest.ptrData不能为空指针。 |
| src | 输入 | 待复制的源内存。src.ptrData不能为空指针。 |
| count | 输入 | 复制的数据长度。长度的设置应参考目标内存及源内存长度,错误的设置可能会导致出现coredump情况。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
MxbsMemset
内存设置函数。
Note
由于Memset和系统函数重名,建议优先使用MxbsMemset函数。
static APP_ERROR MemoryHelper::MxbsMemset(MemoryData& data, int32_t value, size_t count);
static APP_ERROR MemoryHelper::MxbsMemset(MemoryData& data, int32_t value, size_t count, AscendStream &stream);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| data | 输入 | 待设置的内存数据。data.size取值范围为[1, 4294967296]。 |
| value | 输入 | 设置的值。 |
| count | 输入 | 设置的数据长度。长度不可大于内存实际长度,否则可能会导致出现coredump情况。 |
| stream | 输入 | AscendStream类型,当参数值为AscendStream::DefaultStream()时,接口为同步操作,其他情况下,接口为异步操作。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
SetMaxDataSize
设置MemoryData对象所允许的最大内存大小。
static APP_ERROR MemoryHelper::SetMaxDataSize(long size);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| size | 输入 | 最大内存大小,单位:字节。(限制范围:1 ≤ size ≤ 4294967296) |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
DvppWrapper
类说明
该类封装DVPP基本的编码、解码、抠图和缩放功能,Atlas 推理系列产品支持异步推理。
预计2025年12月正式删除,该类为内部类,不再对外开放。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
DeInit
DVPP去初始化函数,用于完成相关资源的释放,必须与Init接口搭配使用。
适用于除了视频解码、视频编码以外的其他功能(视频解码的去初始化须使用DeInitVdec,视频编码的去初始化须使用DeInitVenc)。
APP_ERROR DvppWrapper::DeInit(void);
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
DeInitVdec
DVPP视频解码去初始化函数,用于完成相关资源的释放,必须与InitVdec接口搭配使用。
APP_ERROR DvppWrapper::DeInitVdec();
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
DeInitVenc
DVPP视频编码去初始化函数,用于完成相关资源的释放,必须与InitVenc接口搭配使用。
APP_ERROR DvppWrapper::DeInitVenc();
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
DvppPngDecode
用于实现DVPP对PNG格式的解码,调用该接口前必须调用Init接口来实现该功能的初始化。
该函数的输入参数约束请参见Decode。
APP_ERROR DvppWrapper::DvppPngDecode(DvppDataInfo& inputDataInfo, DvppDataInfo& outputDataInfo);
APP_ERROR DvppWrapper::DvppPngDecode(const std::string& inputPicPath, DvppDataInfo& outputDataInfo);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputDataInfo | 输入 | 被解码的数据。 |
| inputPicPath | 输入 | 被解码的图片路径。 |
| outputDataInfo | 输出 | 解码后的输出数据。outputDataInfo.dataSize取值范围为[1, 4294967296]。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
DvppJpegEncode
用于实现DVPP对JPEG格式的编码,调用该接口前必须调用Init接口来实现该功能的初始化。
- 输入数据的最大分辨率:8192 * 8192。
- 输入数据的最小分辨率:32 * 32。
- 输入数据格式:
- Atlas 200I/500 A2 推理产品支持YUV_SP_420、YVU_SP_420(nv12、nv21)。
- Atlas 推理系列产品支持YUV_SP_420、YVU_SP_420、RGB_888、BGR_888(nv12、nv21、rgb、bgr),其中RGB(BGR)图像格式分辨率不超过(4096 * 4096)。
APP_ERROR DvppWrapper::DvppJpegEncode(DvppDataInfo& inputDataInfo, DvppDataInfo& outputDataInfo, uint32_t encodeLevel);
APP_ERROR DvppWrapper::DvppJpegEncode(DvppDataInfo& inputDataInfo, std::string outputPicPath, std::string outputPicName, uint32_t encodeLevel);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputDataInfo | 输入 | 输入的待编码数据。 |
| outputDataInfo | 输出 | 编码后的输出。 |
| outputPicPath | 输入 | 生成的图片路径。 |
| outputPicName | 输入 | 生成的图片名称。最终生成的图片会自动生成.jpg后缀,若目标路径中已存在同名的.jpg格式的文件,生成的图片将覆盖原文件。 |
| encodeLevel | 输入 | 编码质量范围[0, 100],其中level 0编码质量与level 100差不多,而在[1, 100]内数值越小输出图片质量越差。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
DvppJpegDecode
用于实现DVPP对JPEG格式的解码,调用该接口前必须调用Init接口来实现该功能的初始化。
APP_ERROR DvppWrapper::DvppJpegDecode(DvppDataInfo& inputDataInfo, DvppDataInfo& outputDataInfo);
APP_ERROR DvppWrapper::DvppJpegDecode(const std::string& inputPicPath, DvppDataInfo& outputDataInfo);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputDataInfo | 输入 | 被解码的数据。 |
| inputPicPath | 输入 | 被解码的图片路径。 |
| outputDataInfo | 输出 | 解码后的输出数据。outputDataInfo.dataSize取值范围为[1, 4294967296]。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
DvppJpegDecodeWithAdaptation
用于Atlas 推理系列产品实现DVPP对JPEG格式的解码,调用该接口前必须调用Init接口来实现该功能的初始化。像素格式为“HI_PIXEL_FORMAT_UNKNOWN”。
APP_ERROR DvppWrapper::DvppJpegDecodeWithAdaptation(DvppDataInfo& inputDataInfo, DvppDataInfo& outputDataInfo);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputDataInfo | 输入 | 被解码的数据。 |
| outputDataInfo | 输出 | 解码后的输出数据。outputDataInfo.dataSize取值范围为[1, 4294967296]。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
DvppJpegConvertColor
用于Atlas 推理系列产品实现DVPP对JPEG的bgr色域转换,调用该接口前必须调用Init接口来实现该功能的初始化。
- 当前支持的输入数据的格式支持YUV_SP_420、YVU_SP_420、RGB_888、BGR_888。
- 输入数据的原图宽高大小范围:32 * 6 ~ 4096 * 4096。
- 输出数据的宽自动与16对齐,高与2对齐,因此宽高范围为:32 * 6 ~ 4096 * 4096。
- 输出数据宽高保持与输入数据一致。
- 请确保转换前的格式与转换后的格式不同。
APP_ERROR DvppWrapper::DvppJpegConvertColor(DvppDataInfo& inputDataInfo, DvppDataInfo& outputDataInfo);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputDataInfo | 输入 | 被解码的数据。 |
| outputDataInfo | 输出 | 解码后的输出数据。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
DvppJpegPredictDecSize
根据存放JPEG图片数据的内存预估JPEG图片解码后所需的输出内存的大小。
APP_ERROR DvppWrapper::DvppJpegPredictDecSize(const void *imageData, uint32_t dataSize, MxbasePixelFormat outputPixelFormat, uint32_t &decSize);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| imageData | 输入 | Host上存放JPEG图片数据的内存地址,不能为Device侧内存地址。 |
| dataSize | 输入 | 内存大小,单位为Byte。 |
| outputPixelFormat | 输入 | 解码后的输出图片的格式。 |
| decSize | 输出 | 预估JPEG图片解码后所需的输出内存的大小,单位Byte。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
DvppVdec
用于实现DVPP对H.264/H.265格式视频的解码,调用该接口前必须调用InitVdec接口来实现视频解码功能的初始化。
APP_ERROR DvppWrapper::DvppVdec(DvppDataInfo& inputDataInfo, void* userData);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputDataInfo | 输入 | 被解码的数据。 |
| userData | 输入 | 用户自定义数据。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
DvppVdecFlush
发送完所有码流后,获取缓存数据并清空缓存队列,接口调用完成后将结束解码过程。
APP_ERROR DvppWrapper::DvppVdecFlush();
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
DvppVenc
用于实现DVPP对H.264/H.265格式视频的编码,调用该接口前必须调用InitVenc接口来实现视频编码功能的初始化。
APP_ERROR DvppWrapper::DvppVenc(DvppDataInfo& inputDataInfo,std::function<void(std::shared_ptr<uint8_t>, uint32_t)>* handleFunc);
APP_ERROR DvppWrapper::DvppVenc(DvppDataInfo& inputDataInfo,std::function<void(std::shared_ptr<uint8_t>, uint32_t, void**)>* handleFunc);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputDataInfo | 输入 | 被编码的数据。 |
| handleFunc | 输入 | 回调函数。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
DvppWrapper
[!NOTICE] 如出现因内存耗尽或设备不支持(设备为非Atlas 推理服务器系列产品、Atlas 200I/500 A2 推理产品、Atlas 推理系列产品),导致构造函数执行失败抛出的异常时,请勿继续调用后续的成员函数。
类构造函数,创建DvppWrapper对象(数字视觉预处理)。
DvppWrapper::DvppWrapper();
~DvppWrapper
DvppWrapper类的默认析构函数。
virtual DvppWrapper::~DvppWrapper(){}
GetPictureDec
获取输入图像的宽、高和颜色通道个数。
APP_ERROR DvppWrapper::GetPictureDec(DvppImageInfo& imageInfo, DvppImageOutput& imageOutput);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| imageInfo | 输入 | 输入图片的格式、存放JPEG图片数据的内存的地址和内存大小(单位为Byte)。JPEG图片数据的内存地址要求为Host侧地址,不能为DVPP侧内存。 |
| imageOutput | 输出 | 图像的宽、高以及颜色通道个数。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
Init
DVPP初始化函数,必须与DeInit接口搭配使用。
适用于除了视频解码、视频编码以外的其他功能(视频解码的初始化须使用InitVdec,视频编码的初始化必须使用InitVenc)。初始化后必须调用对应功能的去初始化函数来释放资源。
APP_ERROR DvppWrapper::Init(void); //Atlas 200I/500 A2 推理产品环境下使用
APP_ERROR DvppWrapper::Init(MxbaseDvppChannelMode dvppChannelMode); // Atlas 200I/500 A2 推理产品、Atlas 推理系列产品环境下通用
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| dvppChannelMode | 输入 | 通道模式。 MXBASE_DVPP_CHNMODE_VPC = 1 // 抠图、缩放 MXBASE_DVPP_CHNMODE_JPEGD = 2 // 图像解码 MXBASE_DVPP_CHNMODE_JPEGE = 3 // 图像编码 MXBASE_DVPP_CHNMODE_PNGD = 4 // PNG解码 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
InitJpegDecodeChannel
初始化JPEG图像通道,用于JPEG解码。
APP_ERROR DvppWrapper::InitJpegDecodeChannel(const JpegDecodeChnConfig& config);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| config | 输入 | 通道配置参数。 对应数据结构参见如下(当前预留)。 struct JpegDecodeChnConfig {}; |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
InitJpegEncodeChannel
初始化JPEG图像通道,用于JPEG编码。
APP_ERROR DvppWrapper::InitJpegEncodeChannel(const JpegEncodeChnConfig& config);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| config | 输入 | 通道配置参数,取值范围为[32, 8192],(即图像最大宽高为8192 * 8192)。仅对Atlas 推理系列产品生效。对于Atlas 200I/500 A2 推理产品,该配置无效。 当前仅支持配置图片编码的通道宽高(maxPicWidth、maxPicHeight),内部自动16对齐,当高小于宽时,高自动向上对齐到宽的长度,请根据实际编码场景图片预留适当的宽高。 对应数据结构参见如下。 struct JpegEncodeChnConfig { uint32_t maxPicWidth = MAX_HIMPI_VENC_PIC_WIDTH; uint32_t maxPicHeight = MAX_HIMPI_VENC_PIC_HEIGHT;}; |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
InitPngDecodeChannel
初始化PNGD图像通道,用于PNG图片解码。
APP_ERROR DvppWrapper::InitPngDecodeChannel(const PngDecodeChnConfig& config);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| config | 输入 | 通道配置参数。 对应数据结构参见如下(当前预留)。 struct PngDecodeChnConfig {}; |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
InitVdec
DVPP视频解码初始化函数,用于完成相关资源的申请,必须与DeInitVdec接口搭配使用。
Note
该接口会注册视频解码相关线程:
- 对于Atlas 200I/500 A2 推理产品,线程命名为:“mx_vdec_acl”。
- 对于Atlas 推理系列产品,线程命名为:“mx_vdec_himpi”。
APP_ERROR DvppWrapper::InitVdec(VdecConfig& vdecConfig);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| vdecConfig | 输入 | 视频解码的配置参数。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
InitVenc
DVPP视频编码初始化函数,用于完成相关资源的申请,必须与DeInitVenc接口搭配使用。
Note
该接口会注册视频编码相关线程:
- 对于Atlas 200I/500 A2 推理产品,线程命名为:“mx_venc_acl”。
- 对于Atlas 推理系列产品,线程命名为:“mx_venc_himpi”。
APP_ERROR DvppWrapper::InitVenc(VencConfig vencConfig);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| vencConfig | 输入 | 视频编码的配置参数。vencConfig.keyFrameInterval参数不能为0。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
InitVpcChannel
初始化VPC图像通道,用于图像处理功能(抠图、缩放、补边、抠图缩放、抠图贴图、色域转换)。
APP_ERROR DvppWrapper::InitVpcChannel(const VpcChnConfig& config);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| config | 输入 | 通道配置参数。对应数据结构参见如下(当前预留)。struct VpcChnConfig {}; |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
VpcBatchCrop
用于实现批量抠图功能,调用该接口前必须调用Init接口来实现该功能的初始化。
-
输入输出数据支持的图像格式参考如下。
- Atlas 200I/500 A2 推理产品支持YUV_SP_420、YVU_SP_420(nv12、nv21)。
- Atlas 推理系列产品支持YUV_SP_420、YVU_SP_420、RGB_888、BGR_888(nv12、nv21、rgb、bgr),其中RGB(BGR)图像格式分辨率不超过(4096 * 4096)。
-
“inputDataInfo”的真实图片分辨率范围:18 * 6 ~ 4096 * 4096,其中YUV_SP_420和YVU_SP_420格式的分辨率为18 * 6 ~ 8192 * 8192。
-
抠图区域不超出输入图像区域,输入抠图坐标框“cropConfig”的四个值推荐均为偶数。除RGB、BGR以外,若包含奇数,则左上角坐标自动向下取偶数,右下角坐标自动向上取偶数。
-
抠图区域的最大分辨率为4096 * 4096,最小分辨率为18 * 6。例如:cropConfig{1, 1, 1287, 1287},实际抠图宽高为:((1287 + 1) - (1 - 1))= 1288,对应的分辨率为1288 * 1288。
APP_ERROR DvppWrapper::VpcBatchCrop(DvppDataInfo& inputDataInfo, std::vector<DvppDataInfo>& outputDataInfoVec, std::vector<CropRoiConfig>& cropConfigVec, AscendStream& stream);
APP_ERROR DvppWrapper::VpcBatchCrop(DvppDataInfo& inputDataInfo, std::vector<DvppDataInfo>& outputDataInfoVec, std::vector<CropRoiConfig>& cropConfigVec);
APP_ERROR DvppWrapper::VpcBatchCrop(std::vector<DvppDataInfo>& inputDataInfoVec, std::vector<DvppDataInfo>& outputDataInfoVec, std::vector<CropRoiConfig>& cropConfigVec, AscendStream& stream);
APP_ERROR DvppWrapper::VpcBatchCrop(std::vector<DvppDataInfo>& inputDataInfoVec, std::vector<DvppDataInfo>& outputDataInfoVec, std::vector<CropRoiConfig>& cropConfigVec);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputDataInfo | 输入 | 待抠图的数据。 |
| inputDataInfoVec | 输入 | 待抠图的一组数据。 |
| outputDataInfoVec | 输出 | 抠图后输出的一组数据。长度不为0。 |
| cropConfigVec | 输入 | 抠图配置组。长度要求与outputDataInfoVec一致。数组中单个配置要求和VpcCrop方法的cropConfig一致。具体请参见CropRoiConfig。 |
| stream | 输入 | AscendStream类型,当不输入AscendStream& stream或者参数值为AscendStream::DefaultStream()时,接口为同步操作,其他情况下,接口为异步操作。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
VpcBatchCropMN
用于实现图像处理批量抠图功能,调用该接口前必须调用Init接口来实现该功能的初始化。
-
输入输出数据支持的图像格式参考如下。
- Atlas 200I/500 A2 推理产品支持YUV_SP_420、YVU_SP_420(nv12、nv21)。
- Atlas 推理系列产品支持YUV_SP_420、YVU_SP_420、RGB_888、BGR_888(nv12、nv21、rgb、bgr),其中RGB(BGR)图像格式分辨率不超过(4096 * 4096)。
-
每一个输入数据的真实分辨率范围:18 * 6 ~ 4096 * 4096,其中YUV_SP_420和YVU_SP_420格式的分辨率为18 * 6 ~ 8192 * 8192。
-
抠图区域不超出输入图像区域,每个输入抠图坐标框的四个值推荐均为偶数。除RGB、BGR以外,若包含奇数,则左上角坐标自动向下取偶数,右下角坐标自动向上取偶数。
-
抠图区域的最大分辨率为4096 * 4096,最小分辨率为18 * 6。例如:cropConfig{1, 1, 1287, 1287},实际抠图宽高为:((1287 + 1) - (1 - 1))= 1288,对应的分辨率为1288 * 1288。
APP_ERROR DvppWrapper::VpcBatchCropMN(std::vector<DvppDataInfo>& inputDataInfoVec, std::vector<DvppDataInfo>& outputDataInfoVec, std::vector<CropRoiConfig>& cropConfigVec, AscendStream& stream);
APP_ERROR DvppWrapper::VpcBatchCropMN(std::vector<DvppDataInfo>& inputDataInfoVec, std::vector<DvppDataInfo>& outputDataInfoVec, std::vector<CropRoiConfig>& cropConfigVec);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputDataInfoVec | 输入 | 待抠图的一组数据。数组长度不超过12。 |
| outputDataInfoVec | 输出 | 抠图后输出的一组数据。长度不为0,长度为inputDataInfoVec与cropConfigVec的乘积。数组长度不超过256。 |
| cropConfigVec | 输入 | 抠图配置组。数组长度不超过256。具体请参见CropRoiConfig。 |
| stream | 输入 | AscendStream类型,当不输入AscendStream& stream或者参数值为AscendStream::DefaultStream()时,接口为同步操作,其他情况下,接口为异步操作。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
VpcBatchCropResize
用于完成批量抠图和大小缩放,调用该接口前必须调用Init接口来实现该功能的初始化。
-
输入输出数据支持的图像格式参考如下。
- Atlas 200I/500 A2 推理产品支持YUV_SP_420、YVU_SP_420(nv12、nv21)。
- Atlas 推理系列产品支持YUV_SP_420、YVU_SP_420、RGB_888、BGR_888(nv12、nv21、rgb、bgr),其中RGB(BGR)图像格式分辨率不超过(4096 * 4096)。
-
输入数据的真实图片宽高大小范围:18 * 6 ~ 4096 * 4096,其中YUV_SP_420和YVU_SP_420格式的宽高可达到8192 * 8192。
-
抠图区域的最小为10 * 6,抠图区域不能超出输入数据的真实图像宽高,每个输入抠图坐标框的四个值推荐均为偶数。
除RGB、BGR以外,若包含奇数,则左上角坐标自动向下取偶数,右下角坐标自动向上取偶数。例如:cropRect{1, 1, 1287, 1287} ,实际抠图宽高为:((1287 + 1) - (1 - 1))= 1288,对应的分辨率为1288 * 1288。
-
缩放的范围为18 * 6 ~ 4096 * 4096,不能超出抠图区域的[1/32, 16]倍数区间。
APP_ERROR DvppWrapper::VpcBatchCropResize(DvppDataInfo& inputDataInfo, std::vector<DvppDataInfo>& outputDataInfoVec, std::vector<CropRoiConfig>& cropConfigVec, ResizeConfig& resizeConfig, AscendStream& stream);
APP_ERROR DvppWrapper::VpcBatchCropResize(DvppDataInfo& inputDataInfo, std::vector<DvppDataInfo>& outputDataInfoVec, std::vector<CropRoiConfig>& cropConfigVec, ResizeConfig& resizeConfig);
APP_ERROR DvppWrapper::VpcBatchCropResize(DvppDataInfo& inputDataInfo, std::vector<DvppDataInfo>& outputDataInfoVec, std::vector<CropRoiConfig>& cropConfigVec, std::vector<ResizeConfig>& resizeConfigVec, AscendStream& stream);
APP_ERROR DvppWrapper::VpcBatchCropResize(DvppDataInfo& inputDataInfo, std::vector<DvppDataInfo>& outputDataInfoVec, std::vector<CropRoiConfig>& cropConfigVec, std::vector<ResizeConfig>& resizeConfigVec);
APP_ERROR DvppWrapper::VpcBatchCropResize(std::vector<DvppDataInfo>& inputDataInfoVec, std::vector<DvppDataInfo>& outputDataInfoVec, std::vector<CropRoiConfig>& cropConfigVec, std::vector<ResizeConfig>& resizeConfigVec, AscendStream& stream);
APP_ERROR DvppWrapper::VpcBatchCropResize(std::vector<DvppDataInfo>& inputDataInfoVec, std::vector<DvppDataInfo>& outputDataInfoVec, std::vector<CropRoiConfig>& cropConfigVec, std::vector<ResizeConfig>& resizeConfigVec);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputDataInfo | 输入 | 待抠图缩放的数据。 |
| inputDataInfoVec | 输入 | 待抠图缩放的一组数据。长度要求与cropConfigVec一致。 |
| cropConfigVec | 输入 | 抠图配置组。长度不能为0。具体请参见CropRoiConfig。 |
| resizeConfigVec | 输入 | 缩放配置组。长度要求与cropConfigVec一致。 |
| outputDataInfoVec | 输出 | 抠图后的输出数据组。长度要求与cropConfigVec一致。数组中单个配置要求和VpcCrop方法的cropConfig一致。 |
| stream | 输入 | AscendStream类型,当不输入AscendStream& stream或者参数值为AscendStream::DefaultStream()时,接口为同步操作,其他情况下,接口为异步操作。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
VpcCrop
用于实现抠图功能,调用该接口前必须调用Init接口来实现该功能的初始化。
-
输入输出数据支持的图像格式参考如下。
- Atlas 200I/500 A2 推理产品支持YUV_SP_420、YVU_SP_420(nv12、nv21)。
- Atlas 推理系列产品支持YUV_SP_420、YVU_SP_420、RGB_888、BGR_888(nv12、nv21、rgb、bgr),其中RGB(BGR)图像格式分辨率不超过(4096 * 4096)。
-
“inputDataInfo”的真实图片分辨率范围:18 * 6 ~ 4096 * 4096,其中YUV_SP_420和YVU_SP_420格式的分辨率为18 * 6 ~ 8192 * 8192。
-
抠图区域不超出输入图像区域,输入抠图坐标框“cropConfig”的四个值推荐均为偶数。除RGB、BGR以外,若包含奇数,则左上角坐标自动向下取偶数,右下角坐标自动向上取偶数。
-
抠图区域的最大分辨率为4096 * 4096,最小分辨率为18 * 6。例如:cropConfig{1, 1, 1287, 1287},实际抠图宽高为:((1287 + 1) - (1 - 1))= 1288,对应的分辨率为1288 * 1288。
APP_ERROR DvppWrapper::VpcCrop(DvppDataInfo& inputDataInfo, DvppDataInfo& outputDataInfo, CropRoiConfig& cropConfig, AscendStream& stream);
APP_ERROR DvppWrapper::VpcCrop(DvppDataInfo& inputDataInfo, DvppDataInfo& outputDataInfo, CropRoiConfig& cropConfig);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputDataInfo | 输入 | 待抠图的数据。 |
| outputDataInfo | 输出 | 抠图后的数据。 |
| cropConfig | 输入 | 抠图配置。抠图配置约束:cropConfig.x1要大于cropConfig.x0,且不能超过图片宽度。抠图宽度最小为10,最大为图片宽度。cropConfig.y1要大于cropConfig.y0,且不能超过图片高度。抠图高度最小为6,最大为图片高度。 |
| stream | 输入 | AscendStream类型,当不输入AscendStream& stream或者参数值为AscendStream::DefaultStream()时,接口为同步操作,其他情况下,接口为异步操作。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
VpcCropAndPaste
用于实现抠图并贴图功能,调用该接口前必须调用Init接口来实现该功能的初始化。
-
输入输出数据支持的图像格式参考如下。
- Atlas 200I/500 A2 推理产品支持YUV_SP_420、YVU_SP_420(nv12、nv21)。
- Atlas 推理系列产品支持YUV_SP_420、YVU_SP_420、RGB_888、BGR_888(nv12、nv21、rgb、bgr),其中RGB(BGR)图像格式分辨率不超过(4096 * 4096)。
-
输入数据的真实图片宽高大小范围:18 * 6 ~ 4096 * 4096,其中YUV_SP_420和YVU_SP_420格式的宽高可达到8192 * 8192。
-
抠图宽高范围不能超过“inputDataInfo”的真实图片宽高,抠图区域的范围最小为:10 * 6。输入抠图参数的四个值推荐均为偶数。除RGB、BGR以外,若包含奇数,则左上角坐标自动向下取偶数,右下角坐标自动向上取偶数。例如:cropRoi{1, 1, 1287, 1287} ,实际抠图宽高为:((1287 + 1) - (1 - 1))= 1288。
-
贴图区域的宽高范围不能超过“outputDataInfo”的真实图片宽高,贴图区域的范围最小为: 10 * 6 ,最大为:4096 * 4096。
-
输入贴图参数的四个值推荐均为偶数。除RGB、BGR以外,若包含奇数,则左上角坐标自动向下取偶数,右下角坐标自动向上取偶数。
-
在Atlas 200I/500 A2 推理产品环境下,贴图宽高不能超过抠图宽高的[1/32, 16]倍数区间。
-
输出的“outputDataInfo”宽自动与16对齐,高与2对齐,因此宽高范围为:32 * 6 ~ 4096 * 4096。
APP_ERROR DvppWrapper::VpcCropAndPaste(const DvppDataInfo& inputDataInfo, DvppDataInfo& outputDataInfo, CropRoiConfig& pasteRoi, CropRoiConfig& cropRoi, AscendStream& stream)
APP_ERROR DvppWrapper::VpcCropAndPaste(const DvppDataInfo& inputDataInfo, DvppDataInfo& outputDataInfo, CropRoiConfig& pasteRoi, CropRoiConfig& cropRoi);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputDataInfo | 输入 | 原始图片相关信息。 |
| outputDataInfo | 输出 | 返回贴图相关信息。 |
| pasteRoi | 输入 | 贴图区域。 |
| cropRoi | 输入 | 原始图片抠图区域。 |
| stream | 输入 | AscendStream类型,当不输入AscendStream& stream或者参数值为AscendStream::DefaultStream()时,接口为同步操作,其他情况下,接口为异步操作。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
VpcPadding
用于实现图像处理补边功能,调用该接口前必须调用Init接口来实现该功能的初始化。
- 输入输出Image类支持的图像格式为YUV_SP_420、YVU_SP_420、RGB_888、BGR_888(nv12、nv21、rgb、bgr),其中RGB(BGR)图像格式分辨率不超过(4096 * 4096)。
- “inputImage”的真实图片分辨率范围:18 * 6 ~ 4096 * 4096。
- 当前接口仅支持“BORDER_CONSTANT”补边方式,其余补边方式预留接口。YUV_SP_420和YVU_SP_420格式,补边尺寸建议为偶数,当补边尺寸为奇数时,会自动进行向上对齐。例如,用户输入补边尺寸为(1, 1, 1, 1),将自动对齐到(2, 2, 2, 2),上下左右各补2个像素点。当输入图片分辨率为4095 * 4095,补边尺寸为(1, 0, 1, 0)时,由于自动对齐后的补边尺寸为4097 * 4097,超出范围,因此会补边失败。
- “outputImage”分辨率为18 * 6 ~ 4096 * 4096,宽自动与16对齐,高与2对齐,范围为[32 * 6 , 4096 * 4096]。
APP_ERROR DvppWrapper::VpcPadding(DvppDataInfo &inputDataInfo, DvppDataInfo &outputDataInfo, MakeBorderConfig &makeBorderConfig);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputDataInfo | 输入 | 待补边的数据。 |
| outputDataInfo | 输出 | 补边后的数据。 |
| makeBorderConfig | 输入 | 补边配置。YUV_SP_420和YVU_SP_420补边尺寸建议为偶数。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
VpcPictureConstrainInfoCheck
校验图片约束信息。
static APP_ERROR DvppWrapper::VpcPictureConstrainInfoCheck(const DvppDataInfo& inputDataInfo, AscendStream& stream);
static APP_ERROR DvppWrapper::VpcPictureConstrainInfoCheck(const DvppDataInfo& inputDataInfo);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputDataInfo | 输入 | 待校验的数据。 |
| stream | 输入 | AscendStream类型,用于记录任务中产生的错误码。当输入AscendStream& stream时,错误码记录到指定的stream中;当不输入AscendStream& stream时,错误码记录到defaultstream中。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
VpcResize
用于完成图片的缩放,调用该接口前必须调用Init接口来实现该功能的初始化。
-
输入输出数据支持的图像格式参考如下。
- Atlas 200I/500 A2 推理产品支持YUV_SP_420、YVU_SP_420(nv12、nv21)。
- Atlas 推理系列产品支持YUV_SP_420、YVU_SP_420、RGB_888、BGR_888(nv12、nv21、rgb、bgr),其中RGB(BGR)图像格式分辨率不超过(4096 * 4096)。
-
“inputDataInfo”的真实图像分辨率范围:[18 * 6 , 4096 * 4096],其中YUV_SP_420和YVU_SP_420格式的宽高可达到8192 * 8192。
-
参数“resize”的最大分辨率:4096 * 4096,最小分辨率:32 * 6。
-
“outputImage”宽自动与16对齐,高与2对齐,因此宽高范围为:[32 * 6 , 4096 * 4096]。
-
缩放后图片的宽高不能超出真实图片的[1/32 ,16]倍数区间。
APP_ERROR DvppWrapper::VpcResize(DvppDataInfo& inputDataInfo, DvppDataInfo& outputDataInfo, ResizeConfig& resizeConfig, AscendStream& stream);
APP_ERROR DvppWrapper::VpcResize(DvppDataInfo& inputDataInfo, DvppDataInfo& outputDataInfo, ResizeConfig& resizeConfig);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputDataInfo | 输入 | 原始图片相关信息。 |
| outputDataInfo | 输出 | 缩放后的数据。 |
| resizeConfig | 输入 | 缩放配置。 |
| stream | 输入 | AscendStream类型,当不输入AscendStream& stream或者参数值为AscendStream::DefaultStream()时,接口为同步操作,其他情况下,接口为异步操作。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
ModelInferenceProcessor
类说明
该类完成模型推理功能的处理。
该接口将于2025年12月退出,请使用Model类。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
DeInit
用于模型推理的去初始化,完成资源释放。与Init配套使用。
APP_ERROR ModelInferenceProcessor::DeInit (void);
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
GetDataFormat
用于获得数据格式。
DataFormat ModelInferenceProcessor::GetDataFormat() const;
| 数据结构 | 说明 |
|---|---|
| DataFormat | 具体请参考DataFormat。 |
GetDynamicBatch
获取动态Batch。
std::vector<int64_t> ModelInferenceProcessor::GetDynamicBatch() const;
GetDynamicGearInfo
获得模型支持的动态输入档位信息,支持动态Batch、动态分辨率和分档动态维度模型。
std::vector<std::vector<uint64_t>> ModelInferenceProcessor::GetDynamicGearInfo();
| 数据结构 | 说明 |
|---|---|
| std::vector<std::vector<uint64_t>> | 模型支持的输入Tensor档位信息。 返回数据结构为空,表示获取分档信息失败或者模型不属于函数功能中描述的三种模型之一,具体的原因可查看报错信息确认。 例如,模型为动态分辨率模型,std::vector<uint64_t>为某一档的高、宽值。 |
GetDynamicImageSizes
获取动态分辨率。
const std::vector<ImageSize>& ModelInferenceProcessor::GetDynamicImageSizes() const;
| 数据结构 | 说明 |
|---|---|
| ImageSize | 具体请参考ImageSize。 |
GetDynamicType
用于获得数据动态类型,包括静态BatchSize,动态BatchSize以及ImageSize(分辨率)。
DynamicType ModelInferenceProcessor::GetDynamicType() const;
| 数据结构 | 说明 |
|---|---|
| DynamicType | 具体请参考DynamicType。 |
GetInputDataType
用于获得输入数据的类型。
std::vector<TensorDataType> ModelInferenceProcessor::GetInputDataType() const;
| 数据结构 | 说明 |
|---|---|
| std::vector<TensorDataType> | 具体请参考TensorDataType。 |
GetInputFormat
用于获得输入数据的格式。
std::vector<size_t> ModelInferenceProcessor::GetInputFormat() const;
GetInputShape
获得输入张量的形状。
std::vector<std::vector<int64_t>> ModelInferenceProcessor::GetInputShape() const;
GetModelDesc
用于获得模型描述信息。
const ModelDesc& ModelInferenceProcessor::GetModelDesc() const;
| 数据结构 | 说明 |
|---|---|
| ModelDesc | 具体请参考ModelDesc。 |
GetOutputDataType
用于获得输出数据的类型。
std::vector<TensorDataType> ModelInferenceProcessor::GetOutputDataType() const;
| 数据结构 | 说明 |
|---|---|
| std::vector<TensorDataType> | 具体请参考TensorDataType。 |
GetOutputFormat
用于获得输出数据的格式。
std::vector<size_t> ModelInferenceProcessor::GetOutputFormat() const;
GetOutputShape
获得输出张量的形状。
std::vector<std::vector<int64_t>> ModelInferenceProcessor::GetOutputShape() const;
Init
用于完成模型推理初始化。与DeInit配套使用
APP_ERROR ModelInferenceProcessor::Init (std::string modelPath, ModelDesc& modelDesc);
APP_ERROR ModelInferenceProcessor::Init (const std::string& modelPath);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| modelPath | 输入 | 模型文件路径。路径上的模型要求属主为当前用户,权限不大于640。最大只支持至4GB大小的模型。 |
| modelDesc | 输出 | 模型描述信息。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
ModelInference
用于执行模型推理。需要先执行Init方法初始化模型。
APP_ERROR ModelInferenceProcessor::ModelInference(std::vector<BaseTensor>& inputTensors, std::vector<BaseTensor>& outputTensors, size_t dynamicBatchSize = 0);
APP_ERROR ModelInferenceProcessor::ModelInference(std::vector<BaseTensor>& inputTensors, std::vector<BaseTensor>& outputTensors, DynamicInfo dynamicInfo);
APP_ERROR ModelInferenceProcessor::ModelInference(const std::vector<TensorBase>& inputTensors, std::vector<TensorBase>& outputTensors, DynamicInfo dynamicInfo);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputTensors | 输入 | 输入张量,模型推理的输入数据。 |
| outputTensors | 输出 | 输出张量,模型推理的输出数据。 |
| dynamicBatchSize | 输入 | 指定模型推理时的批量大小Batch。 |
| dynamicInfo | 输入 | 动态Batch的信息。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
ModelInferenceProcessor
[!NOTICE] 如果使用堆申请内存方式创建ModelinferenceProcessor对象,在使用结束后,请务必释放ModelinferenceProcessor对象,防止出现不可预知的错误。 如出现因内存耗尽,导致构造函数执行失败抛出的异常时,请勿继续调用后续的成员函数。
类构造函数,创建模型推理对象。
ModelInferenceProcessor::ModelInferenceProcessor();
~ModelInferenceProcessor
ModelInferenceProcessor类的默认析构函数。
~ModelInferenceProcessor() = default;
Nms
总体说明
该类实现极大值抑制算法。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
CalcIou
计算IOU值。
float CalcIou(DetectBox a, DetectBox b, IOUMethod method = UNION);
float CalcIou(ObjectInfo a, ObjectInfo b, IOUMethod method = UNION);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| a | 输入 | DetectBox(中心点) / ObjectInfo(边角点)。 |
| b | 输入 | DetectBox(中心点) / ObjectInfo(边角点)。 |
| method | 输入 | IOU计算方式: |
| 数据结构 | 说明 |
|---|---|
| float | IOU值。 |
FilterByIou
根据 IOU 值过滤目标。
void FilterByIou(std::vector<DetectBox> dets, std::vector<DetectBox>& sortBoxes, float iouThresh, IOUMethod method = UNION);
void FilterByIou(std::vector<ObjectInfo> dets, std::vector<ObjectInfo>& sortBoxes, float iouThresh, IOUMethod method = UNION);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| dets | 输入 | 待过滤 DetectBox(中心点) / ObjectInfo(边角点)。 |
| sortBoxes | 输出 | 排序过的数组。 |
| iouThresh | 输入 | 过滤阈值。 |
| method | 输入 | IOU计算方式: |
NmsSort
根据置信度大小过滤重复目标。
void NmsSort(std::vector<DetectBox>& detBoxes, float iouThresh, IOUMethod method = UNION);
void NmsSort(std::vector<ObjectInfo>& detBoxes, float iouThresh, IOUMethod method = UNION);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| detBoxes | 输出 | 待过滤DetectBox(中心点) / ObjectInfo(边角点)。输出过滤后的目标信息。 |
| iouThresh | 输入 | 过滤阈值。 |
| method | 输入 | IOU计算方式: |
NmsSortByArea
根据面积大小过滤重复目标。
void NmsSortByArea(std::vector<DetectBox>& detBoxes, const float iouThresh, const IOUMethod method = UNION);
void NmsSortByArea(std::vector<ObjectInfo>& detBoxes, const float iouThresh, const IOUMethod method = UNION);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| detBoxes | 输入/输出 | 待过滤DetectBox(中心点) / ObjectInfo(边角点)。输出过滤后的目标信息。 |
| iouThresh | 输入 | 过滤阈值。 |
| method | 输入 | IOU计算方式: |
SimilarityTransform
类说明
该类实现相似变换算法。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
SimilarityTransform
类构造函数,创建相似变换类对象(图像变换的一种)。
SimilarityTransform::SimilarityTransform();
~SimilarityTransform
SimilarityTransform类的默认析构函数。
SimilarityTransform::~SimilarityTransform();
Transform
计算仿射变换矩阵。
cv::Mat SimilarityTransform::Transform(const std::vector<cv::Point2f> &srcPoint, const std::vector<cv::Point2f> &dstPoint) const
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| srcPoint | 输入 | 转换前数组。向量中point个数不超过10000,坐标范围为[0,8192]。 |
| dstPoint | 输入 | 转换后数组。长度需要与srcPoint一致。向量中point个数不超过10000,坐标范围为[0,8192]。 |
| 数据结构 | 说明 |
|---|---|
| cv::Mat | 返回仿射变换矩阵。 |
WarpAffine
类说明
该类实现仿射变换算法。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
Process
进行仿射变换。
APP_ERROR WarpAffine::Process(std::vector<MxBase::DvppDataInfo> &warpAffineDataInfoInputVec, std::vector<MxBase::DvppDataInfo> &warpAffineDataInfoOutputVec, std::vector<KeyPointInfo> &keyPointInfoVec, int picHeight, int picWidth);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| warpAffineDataInfoInputVec | 输入 | 变换前图片信息列表。 |
| warpAffineDataInfoOutputVec | 输出 | 变换后图片信息列表。需要与warpAffineDataInfoInputVec元素个数一致。warpAffineDataInfoOutputVec中的数据需要由用户自行释放。 |
| keyPointInfoVec | 输入 | 关键点参数列表,用于生成目标图片尺寸的坐标位置。需要与warpAffineDataInfoInputVec元素个数一致。 |
| picHeight | 输入 | 图片高度。取值范围[32, 8192]。 |
| picWidth | 输入 | 图片宽度。取值范围[32, 8192]。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
WarpAffine
类构造函数,创建仿射变换类对象(图像变换的一种)。
WarpAffine::WarpAffine();
~WarpAffine
WarpAffine类的默认析构函数。
WarpAffine::~WarpAffine();
Hungarian
总体说明
该类实现匈牙利算法。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
HungarianHandleInit
初始化匈牙利算法匹配矩阵图。
APP_ERROR HungarianHandleInit(HungarianHandle &handle, int row, int cols);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| handle | 输入 | 匈牙利算法专用结构体。 |
| row | 输入 | 匈牙利算法匹配矩阵行数。限定范围(0, 8192]。 |
| cols | 输入 | 匈牙利算法匹配矩阵列数。限定范围(0, 8192]。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
HungarianSolve
[!NOTICE] 在调用HungarianSolve函数时,用户需保证已经使用HungarianHandleInit函数对相关参数进行了初始化,否则HungarianSolve函数无法正确执行。
执行匈牙利算法,解决二部图最小权值匹配问题,需要先执行HungarianHandleInit方法。
APP_ERROR HungarianSolve(HungarianHandle &handle, const std::vector<std::vector<int>> &cost, const int rows, const int cols);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| handle | 输入 | 匈牙利算法专用结构体。 |
| cost | 输入 | 权值矩阵。 |
| rows | 输入 | 匈牙利算法匹配矩阵行数。 |
| cols | 输入 | 匈牙利算法匹配矩阵列数。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
KalmanTracker
类说明
该类实现基于卡尔曼滤波算法的目标跟踪。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
CvKalmanInit
初始化卡尔曼滤波器。
void KalmanTracker::CvKalmanInit(const MxBase::DetectBox &initRect);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| initRect | 输入 | 坐标框。 |
KalmanTracker
类构造函数,创建卡尔曼滤波器对象。
KalmanTracker();
~KalmanTracker
KalmanTracker类的默认析构函数。
~KalmanTracker();
Predict
[!NOTICE] 在调用Predict函数时,用户需保证已经使用CvKalmanInit函数对相关参数进行了初始化,否则Predict函数无法正确执行。
使用卡尔曼滤波器对运动目标坐标框进行预测。需要先执行CvKalmanInit方法。
MxBase::DetectBox KalmanTracker::Predict();
| 数据结构 | 说明 |
|---|---|
| MxBase::DetectBox | 坐标框。 |
Update
[!NOTICE] 在调用Update函数时,用户需保证已经使用CvKalmanInit函数对相关参数进行了初始化,否则Update函数无法正确执行。
更新卡尔曼滤波器。需要先执行CvKalmanInit方法。
void KalmanTracker::Update(const MxBase::DetectBox &stateMat)
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| stateMat | 输入 | 坐标框。 |
FastMath
类说明
FastMath类在FastMath.h定义。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
exp
快速幂运算,单例模式。
inline float fastmath::exp(const float x);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| x | 输入 | 指数。 |
| 数据结构 | 说明 |
|---|---|
| float | 运算结果。 |
FastMath
类构造函数,创建数学函数类对象。
FastMath::FastMath();
~FastMath
FastMath类的默认析构函数。
FastMath::~FastMath();
FExp
快速幂运算。
inline float FastMath::FExp(const float x);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| x | 输入 | 指数。 |
| 数据结构 | 说明 |
|---|---|
| float | 运算结果。 |
sigmoid
快速sigmoid函数运算,单例模式。
inline float fastmath::sigmoid(float x);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| x | 输入 | 指数。 |
| 数据结构 | 说明 |
|---|---|
| float | 运算结果。 |
Sigmoid
快速Sigmoid函数运算。
inline float FastMath::Sigmoid(float x);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| x | 输入 | 指数。 |
| 数据结构 | 说明 |
|---|---|
| float | 运算结果。 |
sign
符号函数,单例模式,根据输入数字的符号返回1或-1。
inline float fastmath::sign(float x);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| x | 输入 | 待判断符号的数字。 |
sign
快速符号函数运算。
inline float FastMath::sign(float x);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| x | 输入 | float型。 |
| 数据结构 | 运算说明 |
|---|---|
| float | 运算结果。 |
softmax
快速softmax函数运算,单例模式。
inline void fastmath::softmax(std::vector<float>& digits);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| digits | 输入/输出 | float型的vector,原位进行softmax。 |
Softmax
快速归一化指数函数运算。
void FastMath::Softmax(std::vector<float> &digits);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| digits | 输入/输出 | float类型的vector,原位进行softmax。 |
ConfigData
类说明
ConfigData接口在ConfigUtil.h中定义,当前为内部使用类,请用户不要使用。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
ConfigData
用于存储配置文件数据。
ConfigData::ConfigData();
ConfigData::ConfigData(const ConfigData &other);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| other | 输入 | 复制传入的ConfigData(指针)。 |
~ConfigData
ConfigData类的默认析构函数。
ConfigData::~ConfigData();
GetCfgJson
返回JSON数据。
std::string ConfigData::GetCfgJson();
| 数据结构 | 说明 |
|---|---|
| std::string | 返回JSON数据字符串。 |
GetClassName
根据类别ID获取类别名。
std::string ConfigData::GetClassName(const size_t classId);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| classId | 输入 | 类别ID。 |
| 数据结构 | 说明 |
|---|---|
| std::string | 返回类别名。 |
GetFileValue
根据输入的key获取对应的value。
template<typename T> APP_ERROR ConfigData::GetFileValue(const std::string &key, T &value) const;
template<typename T> APP_ERROR ConfigData::GetFileValue(const std::string &key, T &value, const T &min, const T &max) const;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| key | 输入 | 关键字。 |
| value | 输出 | 关键字对应的值。 |
| min | 输入 | 限定的最小值(低于最小值取最小值)。 |
| max | 输入 | 限定的最大值(高于最大值取最大值)。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
GetFileValueWarn
函数在GetFileValue基础上不返回错误码。
template<typename T> void ConfigData::GetFileValueWarn(const std::string &key, T &value) const;
template<typename T> void ConfigData::GetFileValueWarn(const std::string &key, T &value, const T &min, const T &max) const;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| key | 输入 | 关键字。 |
| value | 输出 | 关键字对应的值。 |
| min | 输入 | 限定的最小值(低于最小值取最小值)。 |
| max | 输入 | 限定的最大值(高于最大值取最大值)。 |
InitContent
初始化Content。
APP_ERROR ConfigData::InitContent(const std::string &content);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| content | 输入 | string类型,配置信息。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
InitFile
初始化File。
APP_ERROR ConfigData::InitFile(std::ifstream &inFile);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inFile | 输入 | 读取的文件。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
InitJson
初始化JSON。
APP_ERROR ConfigData::InitJson(std::ifstream &inFile);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inFile | 输入 | 读取的文件。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
LoadLabels
根据路径读取Labels数据。
APP_ERROR ConfigData::LoadLabels(const std::string &labelPath);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| labelPath | 输入 | Label数据文件的路径。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
operator=
复制数据。
ConfigData &operator = (const ConfigData &other);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| other | 输入 | 深度复制传入的ConfigData(非指针)。 |
SetFileValue
根据传入的key赋值对应的value(保存数据至File)。
template<typename T> APP_ERROR ConfigData::SetFileValue(const std::string &key, const T &value);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| key | 输入 | 关键字。 |
| value | 输入 | 关键字对应的值。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
SetJsonValue
根据传入的key赋值对应的value(保存数据)。
APP_ERROR ConfigData::SetJsonValue(const std::string &key, const std::string &value, int pos = -1);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| key | 输入 | 关键字。 |
| value | 输入 | 关键字对应的值。 |
| pos | 输入 | int型。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
ConfigUtil
类说明
ConfigUtil接口在ConfigUtil.h中定义,当前为内部使用类,请用户不要使用。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
LoadConfiguration
读取配置文件数据。
APP_ERROR ConfigUtil::LoadConfiguration(const std::string &config, ConfigData &data, ConfigMode mode = CONFIGJSON);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| config | 输入 | 配置文件路径。 |
| data | 输出 | 从配置文件中获取参数数据。 |
| mode | 输入 | 文件类型,详见ConfigMode。 |
| 数据结构 | 运算说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
DeviceManager
类说明
DeviceManager接口在DeviceManager.h中定义,当前为内部使用类,请用户不要使用。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
Atlas 800I A2推理产品
CheckDeviceId
检查设备ID是否合法。
APP_ERROR DeviceManager::CheckDeviceId(int32_t deviceId);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| deviceId | 输入 | 设备ID。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
~DeviceManager
DeviceManager类的默认析构函数。
virtual DeviceManager::~DeviceManager();
DestroyDevices
释放所有设备资源。
APP_ERROR DeviceManager::DestroyDevices();
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
GetCurrentDevice
获取最近使用的设备。
APP_ERROR DeviceManager::GetCurrentDevice(DeviceContext& device);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| device | 输出 | 获取最近运行的设备。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
GetDevicesCount
获取设备数目。
APP_ERROR DeviceManager::GetDevicesCount(uint32_t& deviceCount);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| deviceCount | 输出 | 设备数目。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
GetInstance
单例模式获取设备管理器。
static DeviceManager *DeviceManager::GetInstance();
| 数据结构 | 说明 |
|---|---|
| DeviceManager | 设备管理器。 |
GetSocName
查询当前运行环境的芯片版本。
static std::string DeviceManager::GetSocName();
| 数据结构 | 说明 |
|---|---|
| string | 返回芯片版本信息。 |
InitDevices
初始化所有设备。
APP_ERROR DeviceManager::InitDevices(std::string configFilePath = "");
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| configFilePath | 输入 | 配置文件路径。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
IsAscend310B
判断是否使用Atlas 200I/500 A2 推理产品。
static bool DeviceManager::IsAscend310B();
| 数据结构 | 说明 |
|---|---|
| bool | 判断是否使用Atlas 200I/500 A2 推理产品。 |
IsAscend310P
判断是否使用Atlas 推理系列产品。
static bool DeviceManager::IsAscend310P();
| 数据结构 | 说明 |
|---|---|
| bool | 判断是否使用Atlas 推理系列产品。 |
IsAtlas800IA2
判断是否使用Atlas 800I A2推理产品。
static bool DeviceManager::IsAtlas800IA2();
| 数据结构 | 说明 |
|---|---|
| bool | 判断是否使用Atlas 800I A2推理产品。 |
IsInitDevices
所有设备是否初始化。
bool DeviceManager::IsInitDevices() const;
| 数据结构 | 说明 |
|---|---|
| bool | 所有设备是否初始化。 |
SetDevice
指定待使用的设备。
APP_ERROR DeviceManager::SetDevice(DeviceContext device);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| device | 输入 | 待使用的设备。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
LineRegressionFit
类说明
线性拟合类。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
公共参数
| 参数名 | 数据类型 | 参数说明 |
|---|---|---|
| alpha_ | double | 斜率,默认值为0.0。 |
| beta_ | double | 截距,默认值为0.0。 |
LineRegressionFit
类构造函数,创建线性拟合类对象。
LineRegressionFit::LineRegressionFit();
~LineRegressionFit
LineRegressionFit类的默认析构函数。
LineRegressionFit::~LineRegressionFit();
LRFunction
计算x横坐标值在拟合线性后斜率和截距条件下的纵坐标值。
double LineRegressionFit::LRFunction(const float &x) const;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| x | 输入 | 横坐标值。 |
SetAlphaAndBeta
计算斜率和截距。
void LineRegressionFit::SetAlphaAndBeta(const std::vector<float> &xVec, const std::vector<float> &yVec);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| xVec | 输入 | 横坐标数组。 |
| yVec | 输入 | 纵坐标数组。 |
NpySort
类说明
numpy排序算法C++实现类。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
GetSortIdx
排序后的索引数组。
std::vector<int> NpySort::GetSortIdx();
NpyArgHeapSort
numpy堆排序。
void NpySort::NpyArgHeapSort(int tosort, int n);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| tosort | 输入 | 待排序数组起始索引。 |
| n | 输入 | 待排序的元素个数。 |
NpyArgQuickSort
numpy快速排序。
void NpySort::NpyArgQuickSort(bool reverse);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| reverse | 输入 | 是否倒序。 |
NpySort
numpy排序算法构造函数。
explicit NpySort::NpySort() = default;
NpySort::NpySort(std::vector<float> preSortVec, std::vector<int> sortIdx);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| preSortVec | 输入 | 待排序数组,长度大于0。 |
| sortIdx | 输入 | 待排序索引数组。单个索引最小为0,最大为该数组长度-1。长度与待排序数组相同。 |
~NpySort
NpySort类的默认析构函数。
NpySort::~NpySort();
TensorBase
类说明
该类主要有TensorBase数据结构的构造方法和相关的功能接口。
该类即将废弃,预计2025年12月正式删除,请使用Tensor类。
[!NOTICE] 如出现因内存耗尽,导致构造函数执行失败抛出的异常时,请勿继续调用后续的成员函数。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
BatchConcat
将多batch的Tensor组合成一个Tensor。
static APP_ERROR TensorBase::BatchConcat(const std::vector<TensorBase> &inputs, TensorBase &output);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputs | 输入 | Tensor列表,列表大小不超过1024。 |
| output | 输出 | 组合后的Tensor对象。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
BatchStack
将多batch的Tensor组合成一个Tensor,相比于BatchConcat拓展了Tensor的维度。
static APP_ERROR TensorBase::BatchStack(const std::vector<TensorBase> &inputs, TensorBase &output);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputs | 输入 | Tensor列表,列表大小不超过1024。 |
| output | 输出 | 组合后的Tensor对象。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
BatchVector
合并batch组合成一个Tensor。该函数实际调用BatchConcat和BatchStack,实现组batch操作,通过keepDims参数控制具体调用函数。
static APP_ERROR TensorBase::BatchVector(const std::vector<TensorBase> &inputs, TensorBase &output, const bool &keepDims = false);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| inputs | 输入 | 多batch模型,将TensorBase对象列表作为输入。列表大小不超过1024。 |
| output | 输出 | 组batch后输出一个TensorBase对象。 |
| keepDims | 输入 | 保持其多维特性的参数。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
CheckTensorValid
用于查看Tensor对象是否合法。
APP_ERROR TensorBase::CheckTensorValid() const;
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
CreateTensorBase
用来创建TensorBase对象,并根据传入参数不同,调用不同的构造函数。
template<typename... Param>
static APP_ERROR TensorBase::CreateTensorBase(TensorBase &tensor, Param... params);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| tensor | 输出 | TensorBase对象,用于接收构造的TensorBase对象。 |
| params | 输入 | 用于构造TensorBase的参数,具体参数可参考构造函数。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
GetTensorType
用于获取Tensor的内存类型。
MemoryData::MemoryType TensorBase::GetTensorType() const;
| 数据结构 | 说明 |
|---|---|
| MemoryType | 申请的内存类型: ● MEMORY_HOST:对应Host侧。 ● MEMORY_DEVICE:对应Device侧。 ● MEMORY_DVPP:对应DVPP侧。 ● MEMORY_HOST_MALLOC:对应malloc申请内存。 ● MEMORY_HOST_NEW:对应new申请内存。 |
GetBuffer
用于获取Tensor指针。
void* TensorBase::GetBuffer() const;
APP_ERROR TensorBase::GetBuffer(void *&ptr, const std::vector<uint32_t> &indices) const;
template<typename T, typename... Ix>
APP_ERROR TensorBase::GetBuffer(T* &value, Ix... index) const;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| ptr | 输出 | 获取到的buffer指针。 |
| indices | 输入 | 传入的索引列表,待复制的源内存。 |
| value | 输出 | 获取到的buffer。 |
| index | 输入 | 传入的索引值。 |
| 数据结构 | 说明 |
|---|---|
| void* | 指针的首地址,即buffer指针。 |
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
GetByteSize
用于获取buffer字节数据量。
size_t TensorBase::GetByteSize() const;
| 数据结构 | 说明 |
|---|---|
| size_t | 返回具体数值。 |
GetDataType
用于获取内存中张量的数据类型。
TensorDataType TensorBase::GetDataType() const;
| 数据结构 | 说明 |
|---|---|
| TensorDataType | 请参考TensorDataType枚举说明。 |
GetDataTypeSize
用于获取Tensor的数据类型。根据TensorDataType的具体类型返回该类型字节长度。
uint32_t TensorBase::GetDataTypeSize() const;
| 数据结构 | 说明 |
|---|---|
| uint32_t | Tensor的数据类型对应的字节长度。 |
GetDesc
用于获取详细信息。
std::string TensorBase::GetDesc();
| 数据结构 | 说明 |
|---|---|
| std::string | 返回详情信息。 |
GetDeviceId
用于获取Tensor的设备号。
int32_t TensorBase::GetDeviceId() const;
| 数据结构 | 说明 |
|---|---|
| int32_t | 返回设备号。 |
GetIndices
将一个新的元素加到向量的最后面。
void TensorBase::GetIndices (std::vector<T>& indices, U value);
void TensorBase::GetIndices (std::vector<T>& indices, U value, Ix ... idxs);
void TensorBase::GetIndices (std::vector<T>& indices, std::vector<U> values);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| indices | 输入/输出 | 输入的向量。 |
| value | 输入 | 被添加到向量的值。 |
| idxs | 输入 | 被添加到向量的值。 |
GetShape
用于获取Tensor的形状。
std::vector<uint32_t> TensorBase::GetShape() const;
| 数据结构 | 说明 |
|---|---|
| std::vector<uint32_t> | shape数组。 |
GetSize
用于获取张量数据对应内存大小。
size大小应与实际内存大小一致,否则可能会导致程序出现coredump情况。
size_t TensorBase::GetSize() const;
| 数据结构 | 说明 |
|---|---|
| size_t | 返回具体数值。 |
GetStrides
用于获取Tensor的步长。
std::vector<uint32_t> TensorBase::GetStrides() const;
| 参数名 | 说明 |
|---|---|
| std::vector<uint32_t> | Tensor的步长数组。 |
GetValidRoi
支持查询TensorBase的有效数据区域。
Rect TensorBase::GetValidRoi() const;
| 数据结构 | 说明 |
|---|---|
| Rect | 返回TensorBase对象的有效数据区域,数据类型请参见Rect。 |
GetValue
获取Host侧的Tensor的buffer,首先判断Tensor是否在Host侧,然后在其中调用GetBuffer函数实现获取buffer的功能。
template<typename T, typename... Ix>
APP_ERROR TensorBase::GetValue(T &value, Ix... index) const;
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| value | 输出 | 获取到对应Tensor的buffer。 |
| index | 输入 | 待获取Tensor的索引。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
IsDevice
用于判断Tensor对象是否在Device侧。
bool TensorBase::IsDevice() const;
| 数据结构 | 说明 |
|---|---|
| bool | true:在Device侧。false:不在Device侧。 |
IsHost
用于判断Tensor对象是否在Host侧。
bool TensorBase::IsHost() const;
| 数据结构 | 说明 |
|---|---|
| bool | true:在Host侧。false:不在Host侧。 |
operator=
等号运算符重载,用于TensorBase对象之间的赋值。
TensorBase& TensorBase::operator = (const TensorBase& other);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| other | 输入/输出 | TensorBase对象。 |
SetShape
设置TensorBase的形状。
APP_ERROR TensorBase::SetShape(std::vector<uint32_t> shape);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| shape | 输入 | shape向量中各维度要求为正整数且单个或各项乘积需小于536,870,912(512 * 1024 * 1024),否则函数将抛出异常。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
SetValidRoi
支持设置TensorBase的有效区域,仅支持NHWC(N=1)、HWC与HW维度的TensorBase对象设置,有效区域的宽高不能超过原始图片。
APP_ERROR TensorBase::SetValidRoi(Rect rect);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| rect | 输入 | 表示TensorBase对象的数据有效区域,数据类型请参见Rect。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
TensorBase
TensorBase的构造函数,用来创建TensorBase对象,根据传入的不同参数可选用不同的构造函数。
[!NOTICE] 如出现因内存耗尽,导致构造函数执行失败抛出的异常时,请勿继续调用后续的成员函数。
原型1:
TensorBase::TensorBase();
原型2:
TensorBase::TensorBase(const MemoryData &memoryData, const bool &isBorrowed, const std::vector<uint32_t> &shape, const TensorDataType &type);
原型3:
TensorBase::TensorBase(const std::vector<uint32_t> &shape, const TensorDataType &type, const MemoryData::MemoryType &bufferType, const int32_t &deviceId);
原型4:
TensorBase::TensorBase(const std::vector<uint32_t> &shape, const TensorDataType &type, const int32_t &deviceId);
原型5:
TensorBase::TensorBase(const std::vector<uint32_t> &shape, const TensorDataType &type);
原型6:
TensorBase::TensorBase(const std::vector<uint32_t> &shape);
原型7:
TensorBase::TensorBase(const TensorBase& tensor) = default;
Note
- 函数原型3、4、5、6只是预先设置了shape,但不会申请内存空间,需要调用TensorBaseMalloc才能申请对应内存空间。
- 函数原型2使用场景:用户已在外部申请内存空间,构造Tensor对象的时候直接引用已申请的内存,需确保内存空间大小与Tensor对象的shape一致,同时可以选择外部申请的空间是Tensor对象内部自行释放还是用户外部释放。
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| memoryData | 输入 | 用于构造TensorBase对象的参数,内存管理结构体,具体请参见MemoryData。 |
| isBorrowed | 输入 | 表示传入的MemoryData数据是否要Tensor主动释放。若为true,表示不需要主动释放,用户自行释放。若为false,用户不需要手动释放,Tensor析构时自动释放。 |
| shape | 输入 | 用于构造TensorBase对象的参数,张量的形状。 |
| type | 输入 | 用于构造TensorBase对象的参数,TensorDataType类型数据,具体请参见TensorDataType枚举说明。 |
| bufferType | 输入 | 用于构造TensorBase对象的参数,张量数据的内存类型。 |
| deviceId | 输入 | 用于构造TensorBase对象的参数,int类型数据,设备编号。 |
| tensor | 输入 | TensorBase对象,用于构造TensorBase对象的参数。 |
~TensorBase
TensorBase类的默认析构函数。
virtual TensorBase::~TensorBase() = default;
TensorBaseCopy
内存复制函数,根据MemoryData中指定的内存位置在Host侧和Device侧之间进行复制。
static APP_ERROR TensorBase::TensorBaseCopy(TensorBase &dst, const TensorBase &src);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| dst | 输出 | 复制后的目标内存。 |
| src | 输入 | 待复制的源内存。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
TensorBaseMalloc
用于获取TensorBase对象的内存。
Tensor对象在析构时会自动释放内存,因此无需通过函数释放内存。
static APP_ERROR TensorBase::TensorBaseMalloc(TensorBase &tensor);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| tensor | 输入 | 用来获取对应内存的Tensor数据。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
ToDevice
将Tensor对象部署到Device侧内存。
APP_ERROR TensorBase::ToDevice(int32_t deviceId);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| deviceId | 输入 | 设备号。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
ToDvpp
将Tensor对象部署到DVPP内存中。
APP_ERROR TensorBase::ToDvpp(int32_t deviceId);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| deviceId | 输入 | 设备号。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
ToHost
将Tensor对象部署到Host侧内存。
APP_ERROR TensorBase::ToHost();
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
Version
总体说明
获取Vision SDK的版本号。
| 参数 | 说明 |
|---|---|
| MINDX_SDK_VERSION | 获取Vision SDK的版本号(uint64型)。调用后处理插件的GetCurrentVersion接口获得该插件的版本号。 |
| MINDX_SDK_MAJOR_VERSION | 获取Vision SDK的大版本号(uint32型)。 |
| MINDX_SDK_MINOR_VERSION | 获取Vision SDK的中版本号(uint32型)。 |
| MINDX_SDK_MICRO_VERSION | 获取Vision SDK的小版本号(uint32型)。 |
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
Atlas 800I A2推理产品
GetSDKVersion
获取Vision SDK的版本号。
std::string GetSDKVersion();
| 数据结构 | 说明 |
|---|---|
| std::string | 返回Vision SDK的版本号,字符串类型保存。 |
Log
类说明
Log接口在“Log.h”中定义。该接口预计2025年12月正式删除,当前为内部使用接口,请用户不要使用。
Note
在多进程场景中,单个进程的日志转储个数默认为50,总的转储个数限制为1000个。在进程数超过1000时,转储的日志会有丢失。 关于日志配置的相关信息可参考日志配置文件。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
Atlas 800I A2推理产品
以下宏定义可以用于打印错误日志:
表 1 宏定义表格
| 宏定义 | 说明 |
|---|---|
| #define LogDebug VLOG_EVERY_N(MxBase::LOG_LEVEL_DEBUG, MxBase::Log::logFlowControlFrequency_) | LogDebug打印调试信息。 |
| #define LogInfo LOG_EVERY_N(INFO, MxBase::Log::logFlowControlFrequency_) | LogInfo打印提示信息,打印关键步骤(例如初始化)的信息,与数据无关。 |
| #define LogWarn LOG_EVERY_N(WARNING, MxBase::Log::logFlowControlFrequency_) | LogWarn打印警告信息,打印处理数据时的告警信息。 |
| #define LogError LOG_EVERY_N(ERROR, MxBase::Log::logFlowControlFrequency_) | LogError打印错误信息,打印处理数据时的错误信息。 |
| #define LogFatal LOG_EVERY_N(FATAL, MxBase::Log::logFlowControlFrequency_) | LogFatal打印致命信息,打印关键步骤(例如初始化)的错误信息。 |
| #define FILELINE FILE, FUNCTION, LINE | 描述当前文件,当前函数以及当前所在代码行。 |
LogDebug << "Begin to process MpDataSerialize(" << elementName_ << ").";
LogInfo << "Begin to initialize MpDataSerialize(" << elementName_ << ").";
LogWarn << "Input data is invalid, element (" << elementName_ <<") will not run normally.";
LogError << GetErrorInfo(ret, elementName_) << "Fail to initialize dvppWrapper_ object.";
LogFatal << GetErrorInfo(ret, elementName_) << "Invalid transfer mode.";
公共参数
| 参数名 | 数据类型 | 参数说明 |
|---|---|---|
| rotateDay_ | int | 日志转储时间。 |
| rotateFileNumber_ | int | 日志转储数量。 |
| logConfigPath_ | string | 日志配置文件路径。 |
| logFlowControlFrequency_ | int | 日志打印频率,默认值为1。 |
| showLog_ | bool | 日志屏显打印开关,默认值为true。 |
Debug
输出调试类信息。
void Log::Debug(const std::string& file, const std::string& function, const int& line, std::string& msg);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| file | 输入 | 信息对应的文件。 |
| function | 输入 | 信息对应的函数。 |
| line | 输入 | 信息所在的行数。 |
| msg | 输入 | 信息内容。 |
Deinit
对已初始化的Log进行去初始化处理。与Init配套使用。
static APP_ERROR Log::Deinit();
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
Error
输出错误类信息。
void Log::Error (const std::string& file, const std::string& function, const int& line, std::string& msg);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| file | 输入 | 信息对应的文件。 |
| function | 输入 | 信息对应的函数。 |
| line | 输入 | 信息所在的行数。 |
| msg | 输入 | 信息内容。 |
Fatal
[!NOTICE] 在输出Fatal级别的日志后,会终止程序的运行,请谨慎使用。
输出致命类信息。
void Log::Fatal(const std::string& file, const std::string& function, const int& line, std::string& msg);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| file | 输入 | 信息对应的文件。 |
| function | 输入 | 信息对应的函数。 |
| line | 输入 | 信息所在的行数。 |
| msg | 输入 | 信息内容。 |
Flush
清空显示的Log信息。
void Log::Flush();
getLogger
根据LoggerName获取Log,若不存在,则创建。
执行Log::Deinit后,创建的Log将会释放。
static Log& Log::getLogger(const std::string loggerName = DEFAULT_LOGGER); //DEFAULT_LOGGER = "DEFAULT_LOGGER"
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| loggerName | 输入 | Log的名字。 |
| 数据结构 | 说明 |
|---|---|
| Log | 返回Log。 |
Info
输出消息类信息。
void Log::Info (const std::string& file, const std::string& function, const int& line, std::string& msg);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| file | 输入 | 信息对应的文件。 |
| function | 输入 | 信息对应的函数。 |
| line | 输入 | 信息所在的行数。 |
| msg | 输入 | 信息内容。 |
Init
初始化Log。与Init配套使用。
static APP_ERROR Log::Init();
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
InitWithoutCfg
初始化Log时,不读取配置文件。
static APP_ERROR Log::InitWithoutCfg();
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 程序执行返回的错误码,请参考APP_ERROR说明。 |
LogRotateByNumbers
记录一定个数的数据。
static void Log::LogRotateByNumbers(int fileNumbers);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| fileNumbers | 输入 | 设置记录文件数量,取值范围为大于0的整数。 |
LogRotateByTime
记录一定时间内的数据。
static void Log::LogRotateByTime(int rotateDay);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| rotateDay | 输入 | 设置记录文件时长。 |
SetLogParameters
设置日志配置数据。
static void Log::SetLogParameters(const ConfigData& configData);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| configData | 输出 | 配置数据。 |
UpdateFileMode
更新文件的模式。
static void Log::UpdateFileMode();
Warn
输出警告类信息。
void Log::Warn (const std::string& file, const std::string& function, const int& line, std::string& msg);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| file | 输入 | 信息对应的文件。 |
| function | 输入 | 信息对应的函数。 |
| line | 输入 | 信息所在的行数。 |
| msg | 输入 | 信息内容。 |
ErrorCode
类说明
根据错误码获取错误信息。
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
Atlas 800I A2推理产品
ConvertReturnCodeToLocal
函数内部使用,将三方库返回错误码转换到本地错误码。
APP_ERROR ConvertReturnCodeToLocal(ReturnCodeType type, int errorCode)
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| type | 输入 | 返回码类型,类型参见如下。enum ReturnCodeType { GST_FLOW_TYPE = 0,}; |
| errorCode | 输入 | 错误码。 |
| 数据结构 | 说明 |
|---|---|
| APP_ERROR | 本地错误码。 |
GetAppErrCodeInfo
根据错误码获取对应错误信息。
std::string GetAppErrCodeInfo(APP_ERROR err);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| err | 输入 | 错误码。 |
| 数据结构 | 说明 |
|---|---|
| std::string | 错误码对应错误信息。 |
GetErrorInfo
根据错误码获取对应错误信息。
std::string GetErrorInfo(const APP_ERROR err, std::string callingFuncName = "")
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| err | 输入 | APP_ERROR类型,错误码。 |
| callingFuncName | 输入 | std::string类型,指定产生错误码的函数名。仅当错误码为CANN错误码时,才需要传入该参数,用于记录产生该错误码的CANN函数名,从而方便后续进行错误定位。 |
| 数据结构 | 说明 |
|---|---|
| std::string | 错误码对应的错误相关信息,便于用户进行错误定位。错误码的说明请参见APP_ERROR说明。 |
APP_ERROR说明
using APP_ERROR = int;
APP_ERROR类用于表示程序执行的返回码,其包括Vision SDK返回码、三方软件的错误码及部分CANN返回码。Vision SDK返回码用于表示Vision SDK接口执行的情况,常与GetErrorInfo接口配合使用、用于记录日志;CANN返回码用于表示CANN接口执行的情况,不推荐用户使用,其返回码含义详见《CANN 应用开发接口》的“返回码列表”章节。
全量APP_ERROR返回码请参考“MxBase/ErrorCode/ErrorCode.h”文件。为了方便用户查阅Vision SDK返回码,下表展示了Vision SDK返回码,更多三方软件和CANN返回码请参见Vision SDK APP_ERROR返回码.xlsx。其中,返回信息用于解释返回码的具体含义。
表 1 Vision SDK返回码列表
| 返回码 | 返回码值 | 返回信息 |
|---|---|---|
| APP_ERR_OK | 0 | "Success" |
| APP_ERR_ACL_FAILURE | -1 | "ACL: general failure" |
| APP_ERR_ACL_ERR_BASE | 0 | "Success" |
| APP_ERR_ACL_INVALID_PARAM | 1 | "ACL: invalid parameter" |
| APP_ERR_ACL_BAD_ALLOC | 2 | "ACL: memory allocation fail" |
| APP_ERR_ACL_RT_FAILURE | 3 | "ACL: runtime failure" |
| APP_ERR_ACL_GE_FAILURE | 4 | "ACL: Graph Engine failure" |
| APP_ERR_ACL_OP_NOT_FOUND | 5 | "ACL: operator not found" |
| APP_ERR_ACL_OP_LOAD_FAILED | 6 | "ACL: fail to load operator" |
| APP_ERR_ACL_READ_MODEL_FAILURE | 7 | "ACL: fail to read model" |
| APP_ERR_ACL_PARSE_MODEL | 8 | "ACL: parse model failure" |
| APP_ERR_ACL_MODEL_MISSING_ATTR | 9 | "ACL: model missing attribute" |
| APP_ERR_ACL_DESERIALIZE_MODEL | 10 | "ACL: deserialize model failure" |
| APP_ERR_ACL_EVENT_NOT_READY | 12 | "ACL: event not ready" |
| APP_ERR_ACL_EVENT_COMPLETE | 13 | "ACL: event complete" |
| APP_ERR_ACL_UNSUPPORTED_DATA_TYPE | 14 | "ACL: unsupported data type" |
| APP_ERR_ACL_REPEAT_INITIALIZE | 15 | "ACL: repeat initialize" |
| APP_ERR_ACL_COMPILER_NOT_REGISTERED | 16 | "ACL: compiler not registered" |
| APP_ERR_ACL_IO | 17 | "ACL: IO failed" |
| APP_ERR_ACL_INVALID_FILE | 18 | "ACL: invalid file" |
| APP_ERR_ACL_INVALID_DUMP_CONFIG | 19 | "ACL: invalid dump config" |
| APP_ERR_ACL_INVALID_PROFILING_CONFIG | 20 | "ACL: invalid profiling config" |
| APP_ERR_ACL_OP_TYPE_NOT_MATCH | 21 | "ACL: operator type not match" |
| APP_ERR_ACL_OP_INPUT_NOT_MATCH | 22 | "ACL: operator input not match" |
| APP_ERR_ACL_OP_OUTPUT_NOT_MATCH | 23 | "ACL: operator output not match" |
| APP_ERR_ACL_OP_ATTR_NOT_MATCH | 24 | "ACL: operator attribute not match" |
| APP_ERR_ACL_API_NOT_SUPPORT | 25 | "ACL: API not supported" |
| APP_ERR_ACL_BAD_COPY | 26 | "ACL: memory copy fail" |
| APP_ERR_ACL_BAD_FREE | 27 | "ACL: memory free fail" |
| APP_ERR_COMM_BASE | 1000 | "Success" |
| APP_ERR_COMM_FAILURE | 1001 | "General Failed" |
| APP_ERR_COMM_INNER | 1002 | "Internal error" |
| APP_ERR_COMM_INVALID_POINTER | 1003 | "Invalid Pointer" |
| APP_ERR_COMM_INVALID_PARAM | 1004 | "Invalid parameter" |
| APP_ERR_COMM_UNREALIZED | 1005 | "Not implemented" |
| APP_ERR_COMM_OUT_OF_MEM | 1006 | "Out of memory" |
| APP_ERR_COMM_ALLOC_MEM | 1007 | "memory allocation error" |
| APP_ERR_COMM_FREE_MEM | 1008 | "free memory error" |
| APP_ERR_COMM_OUT_OF_RANGE | 1009 | "out of range" |
| APP_ERR_COMM_NO_PERMISSION | 1010 | "NO Permission " |
| APP_ERR_COMM_TIMEOUT | 1011 | "Timed out" |
| APP_ERR_COMM_NOT_INIT | 1012 | "Not initialized" |
| APP_ERR_COMM_INIT_FAIL | 1013 | "initialize failed" |
| APP_ERR_COMM_INPROGRESS | 1014 | "Operation now in progress " |
| APP_ERR_COMM_EXIST | 1015 | "Object, file or other resource already exist" |
| APP_ERR_COMM_NO_EXIST | 1016 | "Object, file or other resource doesn't exist" |
| APP_ERR_COMM_BUSY | 1017 | "Object, file or other resource is in use" |
| APP_ERR_COMM_FULL | 1018 | "No available Device or resource" |
| APP_ERR_COMM_OPEN_FAIL | 1019 | "Device, file or resource open failed" |
| APP_ERR_COMM_READ_FAIL | 1020 | "Device, file or resource read failed" |
| APP_ERR_COMM_WRITE_FAIL | 1021 | "Device, file or resource write failed" |
| APP_ERR_COMM_DESTORY_FAIL | 1022 | "Device, file or resource destroy failed" |
| APP_ERR_COMM_EXIT | 1023 | "Fail to exit" |
| APP_ERR_COMM_CONNECTION_CLOSE | 1024 | "Out of connection, Communication shutdown" |
| APP_ERR_COMM_CONNECTION_FAILURE | 1025 | "connection fail" |
| APP_ERR_COMM_STREAM_INVALID | 1026 | "ACL stream is null pointer" |
| APP_ERR_COMM_LOGGING_CONFIG_OPEN_FAIL | 1027 | "Logging config loading failed" |
| APP_ERR_COMM_SDK_HOME_NOSET | 1028 | "SDK_HOME not set" |
| APP_ERR_COMM_INVALID_PATH | 1029 | "Invalid path" |
| APP_ERR_COMM_REPEAT_INITIALIZE | 1030 | "Repeat initialize" |
| APP_ERR_DVPP_BASE | 2000 | "Success" |
| APP_ERR_DVPP_CROP_FAIL | 2001 | "DVPP: crop fail" |
| APP_ERR_DVPP_RESIZE_FAIL | 2002 | "DVPP: resize fail" |
| APP_ERR_DVPP_CROP_RESIZE_FAIL | 2003 | "DVPP: crop and resize fail" |
| APP_ERR_DVPP_CONVERT_FROMAT_FAIL | 2004 | "DVPP: convert image format fail" |
| APP_ERR_DVPP_VPC_FAIL | 2005 | "DVPP: VPC(crop, resize, convert format) fail" |
| APP_ERR_DVPP_JPEG_DECODE_FAIL | 2006 | "DVPP: decode jpeg or jpg fail" |
| APP_ERR_DVPP_JPEG_ENCODE_FAIL | 2007 | "DVPP: encode jpeg or jpg fail" |
| APP_ERR_DVPP_PNG_DECODE_FAIL | 2008 | "DVPP: decode png fail" |
| APP_ERR_DVPP_H26X_DECODE_FAIL | 2009 | "DVPP: decode H264 or H265 fail" |
| APP_ERR_DVPP_H26X_ENCODE_FAIL | 2010 | "DVPP: encode H264 or H265 fail" |
| APP_ERR_DVPP_HANDLE_NULL | 2011 | "DVPP: acldvppChannelDesc is nullptr" |
| APP_ERR_DVPP_PICDESC_FAIL | 2012 | "DVPP: fail to create or set acldvppCreatePicDesc" |
| APP_ERR_DVPP_CONFIG_FAIL | 2013 | "DVPP: fail to set dvpp configuration" |
| APP_ERR_DVPP_OBJ_FUNC_MISMATCH | 2014 | "DVPP: DvppCommon object mismatch the function" |
| APP_ERR_DEVICE_ID_MISMATCH | 2015 | "DVPP: DvppCommon object mismatch the function" |
| APP_ERR_MEMEROY_TYPE_MISMATCH | 2016 | "DVPP: mismatch the memory type" |
| APP_ERR_METADATA_IS_NULL | 2017 | "DVPP: metadata is null" |
| APP_ERR_PROTOBUF_NAME_MISMATCH | 2018 | "DVPP: VpcReSize mismatch the protobuf name" |
| APP_ERR_DVPP_INVALID_FORMAT | 2019 | "DVPP: mismatch the image format" |
| APP_ERR_DVPP_INVALID_IMAGE_WIDTH | 2020 | "DVPP: image width out of range" |
| APP_ERR_DVPP_INVALID_IMAGE_HEIGHT | 2021 | "DVPP: image height out of range" |
| APP_ERR_VDEC_CHANNEL_NUM_OUT_OF_RANGE | 2022 | "DVPP: vdec channel num out of range" |
| APP_ERR_DVPP_CROP_RESIZE_PASTE_FAIL | 2023 | "DVPP: resize and paste fail" |
| APP_ERR_INFER_BASE | 3000 | "Success" |
| APP_ERR_INFER_SET_INPUT_FAIL | 3001 | "Infer: set input fail" |
| APP_ERR_INFER_SET_OUTPUT_FAIL | 3002 | "Infer: set output fail" |
| APP_ERR_INFER_CREATE_OUTPUT_FAIL | 3003 | "Infer: create output fail" |
| APP_ERR_INFER_OP_SET_ATTR_FAIL | 3004 | "Infer: set op attribute fail" |
| APP_ERR_INFER_GET_OUTPUT_FAIL | 3005 | "Infer: get model output fail" |
| APP_ERR_INFER_FIND_MODEL_ID_FAIL | 3006 | "Infer: find model id fail" |
| APP_ERR_INFER_FIND_MODEL_DESC_FAIL | 3007 | "Infer: find model description fail" |
| APP_ERR_INFER_FIND_MODEL_MEM_FAIL | 3008 | "Infer: find model memory fail" |
| APP_ERR_INFER_FIND_MODEL_WEIGHT_FAIL | 3009 | "Infer: find model weight fail" |
| APP_ERR_INFER_DYNAMIC_IMAGE_SIZE_FAIL | 3010 | "Infer: In DYNAMIC_HW mode, only batchSize=1 is supported." |
| APP_ERR_COMMANDER_BASE | 4000 | "Success" |
| APP_ERR_COMMANDER_SPLIT_PARA_ERROR | 4001 | "Commander Splitter parameter error" |
| APP_ERR_COMMANDER_SPLIT_CONVERT_ERROR | 4002 | "Commander Splitter coordinate conversion error" |
| APP_ERR_COMMANDER_NO_AVAIL_SERVER_ERROR | 4003 | "Commander Splitter server is not available" |
| APP_ERR_COMMANDER_INFER_RESULT_ERROR | 4004 | "Commander subtask inference result error." |
| APP_ERR_QUEUE_BASE | 5000 | "Success" |
| APP_ERR_QUEUE_EMPTY | 5001 | "empty queue" |
| APP_ERR_QUEUE_STOPED | 5002 | "queue stopped" |
| APP_ERR_QUEUE_FULL | 5003 | "full queue" |
| APP_ERR_STREAM_BASE | 6000 | "Success" |
| APP_ERR_STREAM_EXIST | 6001 | "stream is exist" |
| APP_ERR_STREAM_NOT_EXIST | 6002 | "stream is not exist" |
| APP_ERR_STREAM_CHANGE_STATE_FAILED | 6003 | "stream change state fail" |
| APP_ERR_STREAM_CREATE_FAILED | 6004 | "stream create fail" |
| APP_ERR_STREAM_INVALID_CONFIG | 6005 | "stream invalid config" |
| APP_ERR_STREAM_INVALID_LINK | 6006 | "stream invalid link" |
| APP_ERR_STREAM_LINK_FAILED | 6007 | "stream link fail" |
| APP_ERR_STREAM_TRANS_MODE_NOT_MATCHED | 6008 | "stream trans mode not match" |
| APP_ERR_STREAM_TRANS_MODE_INVALID | 6009 | "stream trans mode invalid" |
| APP_ERR_STREAM_TIMEOUT | 6010 | "stream timeout" |
| APP_ERR_STREAM_ELEMENT_INVALID | 6011 | "stream element invalid" |
| APP_ERR_STREAM_ELEMENT_EXIST | 6012 | "stream element exist" |
| APP_ERR_STREAM_ELEMENT_NOT_EXIST | 6013 | "stream element not exist" |
| APP_ERR_ELEMENT_INVALID_FACTORY | 6014 | "element invalid factory" |
| APP_ERR_ELEMENT_INVALID_PROPERTIES | 6015 | "element invalid properties" |
| APP_ERR_ELEMENT_PAD_UNLINKED | 6016 | "element pad unlinked" |
| APP_ERR_PIPELINE_PROPERTY_CONFIG_ERROR | 6017 | "pipeline property config error" |
| APP_ERR_PLUGIN_TOOLKIT_BASE | 7000 | "Success" |
| APP_ERR_PLUGIN_TOOLKIT_CREATE_NODE_FAILED | 7001 | "plugin toolkit create node fail" |
| APP_ERR_PLUGIN_TOOLKIT_NODE_ALREADY_EXIST | 7002 | "plugin toolkit node already exist" |
| APP_ERR_PLUGIN_TOOLKIT_MESSAGE_NOT_MATCH | 7003 | "plugin toolkit message not match" |
| APP_ERR_PLUGIN_TOOLKIT_PARENT_NOT_MATCH | 7004 | "plugin toolkit parent not match" |
| APP_ERR_PLUGIN_TOOLKIT_NOT_INITIALIZED | 7005 | "plugin toolkit not initialized" |
| APP_ERR_PLUGIN_TOOLKIT_NODELIST_NOT_EXIST | 7006 | "plugin toolkit nodelist not exist" |
| APP_ERR_PLUGIN_TOOLKIT_NODE_NOT_EXIST | 7007 | "plugin toolkit node not exist" |
| APP_ERR_PLUGIN_TOOLKIT_INVALID_MEMBERID | 7008 | "plugin toolkit invalid memberid" |
| APP_ERR_PLUGIN_TOOLKIT_METADATA_BUFFER_IS_NULL | 7009 | "plugin toolkit metadata buffer is null" |
| APP_ERR_PLUGIN_TOOLKIT_METADATA_KEY_ALREADY_EXIST | 7010 | "plugin toolkit metadata key already exist" |
| APP_ERR_PLUGIN_TOOLKIT_METADATA_KEY_NOEXIST | 7011 | "plugin toolkit metadata key not exist" |
| APP_ERR_PLUGIN_TOOLKIT_METADATA_KEY_ERASE_FAIL | 7012 | "plugin toolkit metadata key erase fail" |
| APP_ERR_PLUGIN_TOOLKIT_METADATA_IS_NULL | 7013 | "plugin toolkit metadata is null" |
| APP_ERR_PLUGIN_TOOLKIT_METADATA_ADD_ERROR_INFO_FAIL | 7014 | "plugin toolkit metadata add error info fail" |
| APP_ERR_PLUGIN_TOOLKIT_METADATA_PLUGIN_NAME_KEY_ALREADY_EXIST | 7015 | "plugin toolkit metadata plugin name key is exist" |
| APP_ERR_PLUGIN_TOOLKIT_METADATA_ERROR_INFO_MAP_IS_NULL | 7016 | "plugin toolkit metadata error info map is null" |
| APP_ERR_PLUGIN_TOOLKIT_MESSAGE_TO_STRING_FAILED | 7017 | "plugin toolkit metadata failed to convert message to string" |
| APP_ERR_PLUGIN_TOOLKIT_FLOW_NOT_LINKED | 7018 | "plugin toolkit pad is not linked" |
| APP_ERR_PLUGIN_TOOLKIT_FLOW_FLUSHING | 7019 | "plugin toolkit pad is flushing" |
| APP_ERR_PLUGIN_TOOLKIT_FLOW_EOS | 7020 | "plugin toolkit pad is EOS" |
| APP_ERR_PLUGIN_TOOLKIT_FLOW_NOT_NEGOTIATED | 7021 | "plugin toolkit pad is not negotiated" |
| APP_ERR_PLUGIN_TOOLKIT_FLOW_ERROR | 7022 | "plugin toolkit some error occurred. Element generating this error should post an error message" |
| APP_ERR_PLUGIN_TOOLKIT_FLOW_NOT_SUPPORTED | 7023 | "plugin toolkit operation is not supported" |
| APP_ERR_PLUGIN_TOOLKIT_METADATA_KEY_EMPTY | 7024 | "the key cannot be empty" |
| APP_ERR_PLUGIN_TOOLKIT_METADATA_PLUGINNAME_EMPTY | 7025 | "the plugin name cannot be empty" |
| APP_ERR_DEVICE_MANAGER_BASE | 9000 | "Success" |
| APP_ERR_DEVICE_MANAGER_QUERY_DEVICE_ERROR | 9001 | "DeviceManager:query device count error" |
| APP_ERR_DEVICE_MANAGER_DESTROY_DEVICE_CHECK_ERROR | 9002 | "DeviceManager:all devices have been released,init or release again fail" |
| APP_ERR_OP_BASE | 10000 | "Success" |
| APP_ERR_OP_CREATE_TENSOR_FAIL | 10001 | "Fail to create tensor in operator" |
| APP_ERR_OP_BAD_FREE | 10002 | "Bad free in operator" |
| APP_ERR_OP_EXECUTE_FAIL | 10003 | "Fail to execute operator" |
| APP_ERR_OP_SYNACHRONIZE_STREAM_FAIL | 10004 | "Fail to synchronize stream in operator" |
| APP_ERR_SIZE_NOT_MATCH | 10005 | "Mismatched size in operator" |
| APP_ERR_MXPLUGINS_BASE | 11000 | "Success" |
| APP_ERR_MXPLUGINS_DEVICE_ID_MISMATCH | 11001 | "MxPlugins: mismatch the device id" |
| APP_ERR_MXPLUGINS_MEMEROY_TYPE_MISMATCH | 11002 | "MxPlugins: mismatch the memory type" |
| APP_ERR_MXPLUGINS_METADATA_IS_NULL | 11003 | "MxPlugins: metadata is null" |
| APP_ERR_MXPLUGINS_PROTOBUF_NAME_MISMATCH | 11004 | "MxPlugins: protobuf descriptor name mismatch" |
基础函数
DvppAlignDown
对内使用函数,外部不可用。
inline uint32_t DvppAlignDown(uint32_t x, uint32_t align);
GetTensorDataTypeDesc
获取张量的数据类型。
std::string GetTensorDataTypeDesc(TensorDataType type);
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| type | 输入 | 枚举值,范围在[-1, 12],参考TensorDataType。 |
| 数据结构 | 说明 |
|---|---|
| std::string | 返回的张量的数据。 |
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
Atlas 800I A2推理产品