CropAndPaste
函数功能
ImageProcessor类的图像抠图并贴图接口:
- 从“inputImage”中抠取一块图像。
- 缩放至指定贴图区域的大小。
- 将缩放后的图片贴到“pastedImage”的指定贴图区域。
- 输入 Image 类的“original”宽高大小范围:18 * 6 ~ 4096 * 4096,其中 YUV_SP_420 和 YVU_SP_420 格式的宽高可以到 8192 * 8192。
- 输入输出Image类的数据类型目前支持YUV_SP_420,YVU_SP_420,RGB_888,BGR_888 四种图像格式。
- 抠图宽高范围不能超过“inputImage”的“original”宽高;贴图宽高范围不能超过“pastedImage”的“original”宽高。
- 抠图区域的范围最小为:10 * 6, 贴图区域的范围最小为: 10 * 6 ,最大为:4096 * 4096。
- 输出图片的宽自动与 16 对齐, 高与 2 对齐,因此宽高范围为:32 * 6 ~ 4096 * 4096。
- 在
Atlas 200/300/500 推理产品 环境下,贴图宽高不能超过抠图宽高的 [1/32,16] 倍数区间。 - 在
Atlas 200/300/500 推理产品 环境下,贴图“rect”的右下角的“x”值推荐与“16”对齐,在Atlas 推理系列产品环境下,贴图“rect”的实际宽需要与“16”对齐,否则会有无效数据做填充。 - 由于硬件接口限制,输入“cropRect”的四个值推荐均为偶数。若包含奇数,则左上角坐标自动向下取偶数,右下角坐标自动向上取偶数。
例如:cropRect{1, 1, 1287, 1287} ,实际抠图宽高为:((1287 + 1) - (1 - 1))= 1288
- 由于硬件接口限制,输入“pasteRect”的四个值推荐均为偶数。若包含奇数,则左上角坐标自动向下取偶数,右下角坐标自动向上取偶数,并且左上角坐标的 x 会自动对齐到 16 的倍数。
例如:
- pasteRect{17, 17, 1287, 1287} ,实际抠图宽高为:((1287 + 1) - (17 - 1))= 1272
- pasteRect{18, 18, 1287, 1287} ,实际抠图宽为:((1287 + 1) - 32) = 1256,高为:((1287 + 1) - 18) = 1270
函数原型
APP_ERROR CropAndPaste(const Image& inputImage, const std::pair<Rect, Rect>& cropPasteRect, Image& pastedImage);
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
inputImage |
输入 |
输入抠图缩放前的Image类。 Decode接口和其他VPC接口获取的Image类可以直接作为输入。若是用户自定义构造的Imag类,则需要设置图像宽高和图像对齐后的宽高。 |
cropPasteRect |
输入 |
输入图像的抠图缩放参数。第一个Rect对应抠图参数,第二个Rect对应贴图参数。 |
pastedImage |
输入/输出 |
输出抠图后的Image类。 |
返回参数说明
数据结构 |
说明 |
---|---|
APP_ERROR |
程序执行返回的错误码,请参考“MxBase/ErrorCode/ErrorCode.h”文件。 |
父主题: ImageProcessor