Skip to main content

Padding

Encode

函数功能

ImageProcessor类的图片编码接口,使用该接口申请的Image内存无需用户管理,由内部管理释放。

  • 输入图像的最大分辨率:8192 * 8192。
  • 输入图像的最小分辨率:32 * 32。
  • 输入图像的真实宽、高均为偶数,若为奇数,则自动向上取偶数,编码出的图片自动补边1像素。
  • 输入图像的宽:对于YUV420SP或RGB数据,对齐到16。
  • 输入图像的高:与输入图片的高度相同的数值,或为输入图片的高度向上对齐到16的数值(最小为32)。
  • 输入图像格式:
    • Atlas 200I/500 A2 推理产品支持YUV_SP_420、YVU_SP_420(nv12、nv21)。
  • 输出图片格式:jpeg压缩格式的图片文件,例如*.jpg。

函数原型

APP_ERROR Encode(const Image& inputImage, const std::string savePath, const uint32_t encodeLevel = 100);
APP_ERROR Encode(const Image& inputImage, std::shared_ptr<uint8_t>& outDataPtr, uint32_t& outDataSize, const uint32_t encodeLevel = 100);

参数说明

参数名输入/输出说明
inputImage输入输入编码前的Image类。Decode接口和其他VPC接口获取的Image类可以直接作为输入。 若是用户自定义构造的Image类,则需要设置图像宽高。
encodeLevel输入默认为“100”,输入编码的级别[0, 100]。
savePath输入输入编码后保存的图片路径,文件后缀名限制为jpg
outDataPtr输出输出编码后的图片内存数据地址。
outDataSize输出输出编码后的图片内存数据大小。

返回参数说明

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

父主题: ImageProcessor

Resize

函数功能

ImageProcessor类的图像缩放接口,使用该接口申请的Image内存无需用户管理,由内部管理释放,缩放效果示意图请参见图1

  1. 输入输出Image类支持的图像格式参考如下。

    • Atlas 200I/500 A2 推理产品 支持YUV_SP_420、YVU_SP_420(nv12、nv21)。
  2. “inputImage”的真实图片分辨率范围:18 * 6 ~ 4096 * 4096,其中YUV_SP_420 和 YVU_SP_420格式的宽高可达到 8192 * 8192。

  3. 参数“resize”的最大分辨率:4096 * 4096,最小分辨率:32 * 6。

  4. “outputImage”宽自动与16对齐,高与2对齐,因此宽高范围为:32 * 6 ~ 4096 * 4096。

  5. 缩放后图片的宽高不能超出真实图片的[1/32 ,16]倍数区间。

    图1 缩放

函数原型

APP_ERROR Resize(const Image& inputImage, const Size& resize, Image& outputImage, const Interpolation interpolation = Interpolation::HUAWEI_HIGH_ORDER_FILTER);
APP_ERROR Resize(const Image& inputImage, const Size& resize, Image& outputImage, const Interpolation interpolation, AscendStream& stream);

参数说明

参数名输入/输出说明
inputImage输入输入缩放前的Image类。Decode接口和其他VPC接口获取的Image类可以直接作为输入。若是用户自定义构造的Image类,则需要设置图像宽高和图像对齐后的宽高。
resize输入输入图像缩放的宽高。
interpolation输入输入图像的缩放方式,可选参数参见如下。
text<br>HUAWEI_HIGH_ORDER_FILTER = 0<br>BILINEAR_SIMILAR_OPENCV = 1<br>NEAREST_NEIGHBOR_OPENCV = 2<br>BILINEAR_SIMILAR_TENSORFLOW = 3<br>NEAREST_NEIGHBOR_TENSORFLOW = 4<br>
Atlas 200I/500 A2 推理产品
支持以下算法(默认为0)。
- 0:华为自研的高滤波算法。
- 1:业界通用的Bilinear算法(与OpenCV算法的计算精度接近)。
- 2:业界通用的Nearest neighbor算法(与OpenCV算法的计算精度接近)。
- 3:业界通用的Bilinear算法(与Tensorflow框架的计算精度接近)。
- 4:业界通用的Nearest neighbor算法(与Tensorflow框架的计算精度接近)。
outputImage输出输出缩放后的Image类。
stream输入输入用于异步执行的Stream,具体请参见AscendStream

返回参数说明

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

父主题: ImageProcessor

Padding

note

须知

Atlas 200/300/500 推理产品暂不支持。

函数功能

ImageProcessor类的图像补边接口,使用该接口申请的Image内存无需用户管理,由内部管理释放。

  1. 输入输出Image类支持的图像格式为YUV_SP_420、YVU_SP_420、RGB_888、BGR_888(nv12、nv21、rgb、bgr),其中RGB(BGR)图像格式分辨率不超过(4096 * 4096)。

  2. “inputImage”的真实图片分辨率范围:18 * 6 ~ 4096 * 4096。

  3. 当前接口仅支持“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,超出范围,因此会补边失败。

  4. “outputImage”分辨率为18 * 6 ~ 4096 * 4096,宽自动与16对齐,高与2对齐,范围为32 * 6 ~ 4096 * 4096。

函数原型

APP_ERROR Padding(const Image& inputImage, Dim &padDim, const Color& color, const BorderType borderType, Image& outputImage);

参数说明

参数名输入/输出说明
inputImage输入输入补边前的Image类。Decode接口和其他VPC接口获取的Image类可以直接作为输入。若是用户自定义构造的Image类,则需要设置图像宽高和图像对齐后的宽高。
padDim输入输入图像补边的尺寸。
color输入输入补边三通道颜色值,仅在“borderType”设置为“BORDER_CONSTANT”时有效。
borderType输入输入补边方式,具体实现请参见BorderType
outputImage输出输出缩放后的Image类。

返回参数说明

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

父主题: ImageProcessor

Crop

函数功能

ImageProcessor类的图像抠图接口,使用该接口申请的Image内存无需用户管理,由内部管理释放,抠图效果示意图请参见图1

输入输出Image类支持的图像格式参考如下。

  • Atlas 200I/500 A2 推理产品 支持YUV_SP_420、YVU_SP_420(nv12、nv21)。
  1. “inputImage”的真实图片分辨率范围:18 * 6 ~ 4096 * 4096,其中 YUV_SP_420 和 YVU_SP_420 格式的分辨率为18 * 6 ~ 8192 * 8192。

  2. 抠图区域不超出输入图片区域,输入抠图坐标框“cropRect”的四个值推荐均为偶数。

    除RGB、BGR以外,若包含奇数,则左上角坐标自动向下取偶数,右下角坐标自动向上取偶数。

    抠图区域的最大分辨率为4096 * 4096,最小分辨率为18 * 6。

    例如:cropRect{1, 1, 1287, 1287},实际抠图宽高为:((1287 + 1) - (1 - 1))= 1288,对应的分辨率为1288 * 1288。

  3. 输出“outputImageVec”中,各项图片的宽自动与16对齐, 高与2对齐,范围为:32 * 6 ~ 4096 * 4096。

批量输入图片的抠图场景,输入图片数量不超过12张,抠图配置参数“cropRectVec”长度不超过256,输出图片张数不超过256且应满足输出图片张数 = 输入图片张数 * 抠图配置参数“cropRectVec”长度

图1 抠图

函数原型

APP_ERROR Crop(const Image& inputImage, const Rect& cropRect, Image& outputImage);
APP_ERROR Crop(const Image& inputImage, const Rect& cropRect, Image& outputImage, AscendStream& stream);
APP_ERROR Crop(const Image& inputImage, const std::vector<Rect>& cropRectVec, std::vector<Image>& outputImageVec);
APP_ERROR Crop(const Image& inputImage, const std::vector<Rect>& cropRectVec, std::vector<Image>& outputImageVec, AscendStream& stream);
APP_ERROR Crop(const std::vector<Image>& inputImageVec, const std::vector<Rect>& cropRectVec, std::vector<Image>& outputImageVec);
APP_ERROR Crop(const std::vector<Image>& inputImageVec, const std::vector<Rect>& cropRectVec, std::vector<Image>& outputImageVec, AscendStream& stream);

参数说明

参数名输入/输出说明
inputImage输入输入抠图前的Image类。 Decode接口和其他VPC接口获取的Image类可以直接作为输入。若是用户自定义构造的Image类,则需要设置图像宽高。
inputImageVec输入输入抠图前的Image类列表(针对批量抠图场景)。
cropRect输入输入图像的抠图坐标框。
cropRectVec输入输入图像的抠图坐标框列表(针对批量抠图场景)。
outputImage输出输出抠图后的Image类。
outputImageVec输出输出抠图后的Image类列表(针对批量抠图场景)。
stream输入输入用于异步执行的Stream,具体请参见AscendStream

返回参数说明

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

父主题: ImageProcessor

CropResize

函数功能

ImageProcessor类的图像抠图并缩放接口,使用该接口申请的Image内存无需用户管理,由内部管理释放,抠图缩放效果示意图请参见图1

输入输出Image类支持的图像格式参考如下。

  • Atlas 200I/500 A2 推理产品 支持YUV_SP_420、YVU_SP_420(nv12、nv21)。
  1. “inputImage”的真实图片宽高大小范围:18 * 6 ~ 4096 * 4096,其中YUV_SP_420和YVU_SP_420格式的宽高可达到8192 * 8192。

  2. 抠图区域的最小为10 * 6,抠图区域不能超出输入图片的真实图片宽高,输入“cropRect”的四个值推荐均为偶数。

    除RGB、BGR以外,若包含奇数,则左上角坐标自动向下取偶数,右下角坐标自动向上取偶数。

    输出Image类的最大分辨率为4096 * 4096,最小分辨率为18 * 6。

    例如:cropRect{1, 1, 1287, 1287} ,实际抠图宽高为:((1287 + 1) - (1 - 1))= 1288,对应的分辨率为1288 * 1288。

  3. 缩放的范围为18 * 6 ~ 4096 * 4096,不能超出抠图区域的[1/32, 16]倍数区间。

  4. 输出“outputImageVec”中,各项图片的宽自动与16对齐, 高与2对齐,范围为:32 * 6 ~ 4096 * 4096。

图1 抠图缩放

函数原型

APP_ERROR CropResize(const Image& inputImage, const std::vector<Rect>& cropRectVec, const Size& resize, std::vector<Image>& outputImageVec);
APP_ERROR CropResize(const Image& inputImage, const std::vector<Rect>& cropRectVec, const Size& resize, std::vector<Image>& outputImageVec, AscendStream& stream);
APP_ERROR CropResize(const Image& inputImage, const std::vector<std::pair<Rect, Size>>& cropResizeVec, std::vector<Image>& outputImageVec);
APP_ERROR CropResize(const Image& inputImage, const std::vector<std::pair<Rect, Size>>& cropResizeVec, std::vector<Image>& outputImageVec, AscendStream& stream);
APP_ERROR CropResize(const std::vector<Image>& inputImageVec, const std::vector<std::pair<Rect, Size>>& cropResizeVec, std::vector<Image>& outputImageVec);
APP_ERROR CropResize(const std::vector<Image>& inputImageVec, const std::vector<std::pair<Rect, Size>>& cropResizeVec, std::vector<Image>& outputImageVec, AscendStream& stream);

参数说明

参数名输入/输出说明
inputImage输入输入抠图缩放前的Image类。 Decode接口和其他VPC接口获取的Image类可以直接作为输入。若是用户自定义构造的Image类,则需要设置图像宽高和图像对齐后的宽高。
inputImageVec输入输入抠图缩放前的Image类列表(针对批量抠图场景)。 Decode接口和其他VPC接口获取的Image类可以直接作为输入。若是用户自定义构造的Image类,则需要设置图像宽高和图像对齐后的宽高。
cropRectVec输入输入抠图参数列表,需要与输出图像列表的元素个数一致。
resize输入输入统一缩放宽高。
cropResizeVec输入输入图像的抠图缩放参数列表。Rect为抠图坐标框,Size为缩放宽高(针对批量抠图缩放场景)。
outputImageVec输出输出抠图后的Image类列表(针对批量抠图场景)。
stream输入输入用于异步执行的Stream,具体请参见AscendStream

返回参数说明

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

父主题: ImageProcessor

CropAndPaste

函数功能

ImageProcessor类的图像抠图并贴图接口,抠图贴图效果示意图请参见图1

  1. 输入输出Image类支持的图像格式参考如下。

    • Atlas 200I/500 A2 推理产品 支持YUV_SP_420、YVU_SP_420(nv12、nv21)。
  2. 从“inputImage”中抠取一块图像。

    1. 输入Image类的真实图片宽高大小范围:18 * 6 ~ 4096 * 4096,其中 YUV_SP_420 和 YVU_SP_420 格式的宽高可达到 8192 * 8192。

    2. 抠图宽高范围不能超过“inputImage”的真实图片宽高,抠图区域的范围最小为:10 * 6。

      输入抠图参数的四个值推荐均为偶数。除RGB、BGR以外,若包含奇数,则左上角坐标自动向下取偶数,右下角坐标自动向上取偶数。

      例如:cropRect{1, 1, 1287, 1287} ,实际抠图宽高为:((1287 + 1) - (1 - 1))= 1288。

  3. 缩放至指定贴图区域的大小。

  4. 将缩放后的图片贴到“pastedImage”的指定贴图区域。

    1. 贴图宽高范围不能超过“pastedImage”的真实图片宽高,贴图区域的范围最小为: 10 * 6 ,最大为:4096 * 4096。
    2. 输入贴图参数的四个值推荐均为偶数。除RGB、BGR以外,若包含奇数,则左上角坐标自动向下取偶数,右下角坐标自动向上取偶数。
    3. 贴图参数左上角坐标的x会自动对齐到16的倍数。例如:
      • pasteRect{17, 17, 1287, 1287} ,实际贴图宽高为:((1287 + 1) - (17 - 1))= 1272,对应的分辨率为1272 * 1272。
      • pasteRect{18, 18, 1287, 1287} ,实际贴图宽为:((1287 + 1) - 32) = 1256,高为:((1287 + 1) - 18) = 1270,对应的分辨率为1256 * 1270。
    4. 贴图宽高不能超过抠图宽高的[1/32, 16]倍数区间。
    5. 在 Atlas 200I/500 A2 推理产品 环境下,贴图“rect”的右下角的“x”值推荐与“16”对齐。
  5. 输出的“pastedImage”宽自动与16对齐,高与2对齐,因此宽高范围为:32 * 6 ~ 4096 * 4096。

    图1 抠图缩放贴图

函数原型

APP_ERROR CropAndPaste(const Image& inputImage, const std::pair<Rect, Rect>& cropPasteRect, Image& pastedImage);
APP_ERROR CropAndPaste(const Image& inputImage, const std::pair<Rect, Rect>& cropPasteRect, Image& pastedImage, AscendStream& stream);

参数说明

参数名输入/输出说明
inputImage输入输入抠图缩放前的Image类。 Decode接口和其他VPC接口获取的Image类可以直接作为输入。若是用户自定义构造的Image类,则需要设置图像宽高和图像对齐后的宽高。
cropPasteRect输入输入图像的抠图缩放参数。第一个Rect对应抠图参数,第二个Rect对应贴图参数
pastedImage输入/输出输出抠图后的Image类。
stream输入输入用于异步执行的Stream,具体请参见AscendStream

返回参数说明

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

父主题: ImageProcessor

在线提单