Decode
函数功能
ImageProcessor类的图片解码接口,使用该接口申请的Image内存无需用户管理,内部管理释放。仅支持以Host侧申请的内存作为解码接口的输入。输入图片内存的数据类型目前支持JPEG和PNG两种格式。
- JPG/JPEG格式:
- JPG/JPEG输入图片的最大分辨率:8192 * 8192,其中 RGB_888, BGR_888 格式只支持至 4096*4096。
- JPG/JPEG输入图片的最小分辨率:32 * 32。
- 输出解码后的图片及“outputImage”的数据类型目前仅支持YUV_SP_420,YVU_SP_420两种图像格式,Atlas 推理系列产品额外支持RGB_888,BGR_888格式的解码。
- 输出图片的宽:
Atlas 200/300/500 推理产品 对齐到128(即宽度为128的倍数),Atlas 推理系列产品对齐到64(即宽度为64的倍数),RGB_888,BGR_888 格式对齐到 16,解码接口自动对齐。 - 输出图片的高:对齐到16(即高度为16的倍数),解码接口自动对齐。JPG/JPEG输入图片格式约束:
- 只支持Huffman编码,码流的subsample为444/422/420/400/440。
- 不支持算术编码。
- 不支持渐进JPEG格式。
- 不支持JPEG2000格式。
- PNG格式:
- PNG输入图片的最大分辨率:4096 * 4096。
- PNG输入图片的最小分辨率:32 * 32。
- 用户无需设置“decodeFormat”参数,默认按PNG源格式进行解码,例如:
- PNG图片通道为RGB/GRAY格式,则解码输出图片格式为RGB_888。
- PNG图片通道为RGBA/AGRAY格式,则解码输出图片格式为RGBA_8888。
- 输出图片的宽:对齐到128(即宽度为128的倍数),解码接口自动对齐。
- 输出图片的高:对齐到16(即高度为16的倍数),解码接口自动对齐。
函数原型
APP_ERROR Decode(const std::shared_ptr<uint8_t> dataPtr, const uint32_t dataSize, Image& outputImage, const ImageFormat decodeFormat = ImageFormat::YUV_SP_420); APP_ERROR Decode(const std::string inputPath, Image& outputImage, const ImageFormat decodeFormat = ImageFormat::YUV_SP_420);
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
dataPtr |
输入 |
输入待解码图片数据的内存地址。解码前图像数据内存地址需要用户进行管理。 |
dataSize |
输入 |
输入待解码图片数据的内存大小。需要与“dataPtr”的实际内存大小相符。 |
decodeFormat |
输入 |
输入解码后图片的格式。
|
inputPath |
输入 |
输入待解码的图片路径。 |
outputImage |
输出 |
输出解码后的Image类。 图片宽高和对齐后的宽高会自动合入进“outputImage”内。 |
返回参数说明
数据结构 |
说明 |
---|---|
APP_ERROR |
程序执行返回的错误码,请参考“MxBase/ErrorCode/ErrorCode.h”文件。 |
父主题: ImageProcessor