VPC功能
- 功能及约束说明
- acldvppVpcResizeAsync
- acldvppVpcCropAsync
- acldvppVpcCropResizeAsync
- acldvppVpcBatchCropAsync
- acldvppVpcBatchCropResizeAsync
- acldvppVpcCropAndPasteAsync
- acldvppVpcCropResizePasteAsync
- acldvppVpcBatchCropAndPasteAsync
- acldvppVpcBatchCropResizePasteAsync
- acldvppVpcBatchCropResizeMakeBorderAsync
- acldvppVpcConvertColorAsync
- acldvppVpcPyrDownAsync
- acldvppVpcEqualizeHistAsync
- acldvppVpcMakeBorderAsync
- acldvppVpcCalcHistAsync
功能及约束说明
功能说明
VPC(vision preprocessing core)功能包括:
- 抠图,从输入图片中抠出需要用的图片区域,支持一图多框和多图多框。
- 缩放
- 针对不同分辨率的图像,VPC的处理方式可分为:
- 非8K缩放,用于处理“(widthStride/系数)在32~4096(包括4096)范围内,heightStride在6~4096”的输入图片,不同格式的输入图片,系数不同,详细描述参见约束说明。
- 8K缩放,在昇腾310 AI处理器上,在昇腾910 AI处理器上,用于处理“widthStride在4096~8192范围内或heightStride在4096~8192范围内(不包括4096)”的输入图片。
- 从是否抠多张图的维度,可分为单图裁剪缩放(支持非压缩格式)、一图多框裁剪缩放(支持非压缩格式)。
- 其它缩放方式,如:原图缩放、等比例缩放(缩放前后图片的宽高比例相同)。
- 针对不同分辨率的图像,VPC的处理方式可分为:
- 叠加,从输入图片中抠出来的图,对抠出的图进行缩放后,放在用户输出图片的指定区域,输出图片可以是空白图片(由用户申请的空输出内存产生的),也可以是已有图片(由用户申请输出内存后将已有图片读入输出内存),只有当输出图片是已有图片时,才表示叠加。
- 拼接,从输入图片中抠多张图片,对抠出的图进行缩放后,放到输出图片的指定区域。
- 格式转换,支持RGB格式、YUV格式之间的格式转换,目前的输入图片格式、输出图片格式,请参见约束说明。
- 图像灰度化,在昇腾310 AI处理器上,在昇腾910 AI处理器上,需从YUV420SP格式的输出图像数据中只取Y分量的数据,表示灰度图片。
概念 |
描述 |
---|---|
宽stride(widthStride) |
指一行图像步长,表示输入/输出图片对齐后的宽,RGB格式或YUV格式的宽stride计算方式不一样。宽stride最小为32,最大为4096 * 4(宽是4096的argb格式的图像,1个像素占用4个字节,一行像素就占用4096*4,即宽stride)。 宽stride的对齐要求,请参见约束说明。 |
高stride(heightStride) |
指图像在内存中的行数,表示输入/输出图片对齐后的高。 高stride的对齐要求,请参见约束说明。 |
上/下/左/右偏移 |
通过配置上偏移、下偏移、左偏移、右偏移可以实现两个功能:指定抠图区域或贴图区域的位置;控制抠图或贴图区域的宽、高,右偏移-左偏移+1=宽,下偏移-上偏移+1=高。
|
抠图区域 |
指用户指定的需抠出的图片区域。 抠图区域最小分辨率为10*6,最大分辨率为4096*4096。 抠图区域的约束,请参见约束说明。 |
贴图区域 |
指在输出图片中用户指定的区域,贴图区域最小分辨率为10*6,最大分辨率为4096*4096。 贴图区域的约束,请参见约束说明。 |
功能示意图
约束说明
- VPC输入的约束:
- 输入图片分辨率:
- 非8K缩放:
- YUV400/YUV420SP/YUV422SP/yuv444sp:widthStride在32~4096(包括4096)范围内,heightStride在6~4096。
- YUV422packed:widthStride/2在32~4096(包括4096)范围内,heightStride在6~4096。
- YUV444packed/RGB888:widthStride/3在32~4096(包括4096)范围内,heightStride在6~4096。
- XRGB8888:widthStride/4在32~4096(包括4096)范围内,heightStride在6~4096。
- 8K缩放:在昇腾310 AI处理器上,在昇腾910 AI处理器上,widthStride在4096~8192范围内或heightStride在4096~8192范围内(不包括4096)
- 非8K缩放:
- 输入图片格式:
- 非8K缩放:支持acldvppPixelFormat枚举值中的如下枚举项:
PIXEL_FORMAT_YUV_400 = 0, PIXEL_FORMAT_YUV_SEMIPLANAR_420 = 1, PIXEL_FORMAT_YVU_SEMIPLANAR_420 = 2, PIXEL_FORMAT_YUV_SEMIPLANAR_422 = 3, PIXEL_FORMAT_YVU_SEMIPLANAR_422 = 4, PIXEL_FORMAT_YUV_SEMIPLANAR_444 = 5, PIXEL_FORMAT_YVU_SEMIPLANAR_444 = 6, PIXEL_FORMAT_YUYV_PACKED_422 = 7, PIXEL_FORMAT_UYVY_PACKED_422 = 8, PIXEL_FORMAT_YVYU_PACKED_422 = 9, PIXEL_FORMAT_VYUY_PACKED_422 = 10, PIXEL_FORMAT_YUV_PACKED_444 = 11, PIXEL_FORMAT_RGB_888 = 12, PIXEL_FORMAT_BGR_888 = 13, PIXEL_FORMAT_ARGB_8888 = 14, PIXEL_FORMAT_ABGR_8888 = 15, PIXEL_FORMAT_RGBA_8888 = 16, PIXEL_FORMAT_BGRA_8888 = 17, PIXEL_FORMAT_YUV_SEMI_PLANNER_420_10BIT = 18, PIXEL_FORMAT_YVU_SEMI_PLANNER_420_10BIT = 19,
- 在昇腾310 AI处理器上,在昇腾910 AI处理器上,8K缩放:支持acldvppPixelFormat枚举值中的如下枚举项:
PIXEL_FORMAT_YUV_SEMIPLANAR_420 = 1, PIXEL_FORMAT_YVU_SEMIPLANAR_420 = 2,
- 非8K缩放:
- 输入内存:
- 内存地址起始要求16对齐。其中128对齐性能最高。调用acldvppMalloc接口/acldvppFree接口申请或释放内存。
- 内存大小与图片数据的格式相关,计算公式如下:
- YUV400:
在昇腾310 AI处理器上,在昇腾910 AI处理器上,计算公式为widthStride*heightStride*3/2
- YUV420SP:widthStride*heightStride*3/2
- YUV422SP:widthStride*heightStride*2
- YUV444SP:widthStride*heightStride*3
- YUV422packed:widthStride*heightStride
- YUV444packed、RGB888:widthStride*heightStride
- ARGB8888:widthStride*heightStride
- YUV400:
- 输入图片的宽stride、高stride对齐要求:
- 对于不同图像格式,宽stride的计算公式不同:
- YUV400、YUV420SP、YUV422SP、YUV444SP:输入图片的宽(width)对齐到16。
- YUV422packed:输入图片的宽(width)对齐到16后,再乘以2(宽16对齐,每个像素占2个字节)。
- YUV444packed、RGB888:输入图片的宽(width)对齐到16,再乘以3(宽16对齐,每个像素占3个字节)。
- ARGB8888:输入图片的宽(width)对齐到16后,再乘以4(宽16对齐,每个像素占4个字节)。
- 高stride:在昇腾310 AI处理器上,在昇腾910 AI处理器上,需2对齐。
- 对于不同图像格式,宽stride的计算公式不同:
- 输入图片分辨率:
- VPC输出的约束:
- 输出图片分辨率:
10*6~4096*4096
- 输出图片格式:支持acldvppPixelFormat枚举值中的如下枚举项:
PIXEL_FORMAT_YUV_SEMIPLANAR_420 = 1, PIXEL_FORMAT_YVU_SEMIPLANAR_420 = 2,
- 输出内存:
- 内存地址起始要求16对齐。其中128对齐性能最高。调用acldvppMalloc接口/acldvppFree接口申请或释放内存。
- 内存大小与图片数据的格式相关,计算公式如下,内存大小大于或等于计算公式的结果即可:
- YUV400:
在昇腾310 AI处理器上,在昇腾910 AI处理器上,计算公式为widthStride*heightStride*3/2
- YUV420SP:widthStride*heightStride*3/2
- YUV422SP:widthStride*heightStride*2
- YUV444SP:widthStride*heightStride*3
- YUV422packed:widthStride*heightStride
- YUV444packed、RGB888:widthStride*heightStride
- ARGB8888:widthStride*heightStride
- YUV400:
- 输出图片的宽stride、高stride对齐要求:
- 宽stride:16对齐。
- 高stride:在昇腾310 AI处理器上,在昇腾910 AI处理器上,需2对齐。
- 输出图片分辨率:
- VPC抠图、贴图约束:
- 抠图区域不超出输入图片,贴图区域不超出输出图片。
- 最大贴图个数256。
- 在昇腾310 AI处理器上,在昇腾910 AI处理器上,贴图区域奇数、偶数限制为:左偏移和上偏移为偶数、右偏移和下偏移为奇数。
- 贴图区域相对输出图片的左偏移16对齐。
贴图时可直接放置在输出图片的最左侧,即相对输出图片的左偏移为0,0也满足16对齐的要求。
- 贴图区域的宽建议16对齐,如果不是16对齐,会多写一段无效数据使其16对齐。
- 在昇腾310 AI处理器上,在昇腾910 AI处理器上,针对缩放功能,贴图/抠图的宽高缩放比例范围:[1/32, 16]。
- 在昇腾310 AI处理器上,在昇腾910 AI处理器上,等比例缩放场景下,当输出图片格式为YUV420SP格式时,贴图左偏移满足16对齐、上偏移2对齐的要求即可。
- 在昇腾310 AI处理器上,在昇腾910 AI处理器上,VPC的输出作为模型推理的输入时:
由于经过VPC处理的输出图片中的贴图区域的宽*高有16*2对齐的约束,因此输出图片中的贴图区域的宽、高有一些补边的无效数据,所以在VPC贴图前,应首先使用VPC的缩放功能将贴图区域的分辨率缩放成16*2对齐,否则无效数据会影响模型推理的精度。
性能指标说明(昇腾310 AI处理器)
- 对于非8K缩放,单个Device的基本场景性能指标参考如下:
对于1080p的图像,若存在Host->Device的图片数据拷贝,由于拷贝带宽限制,最大总帧率约为1000fps。
对于4K的图像,若存在Host->Device的图片数据拷贝,由于拷贝带宽限制,最大总帧率约为250fps。场景举例
总帧率
- 输入图像分辨率:1080p(1920*1080)
- 输出图像分辨率:1080p(1920*1080)
- 输入/输出图片格式:YUV420SP
- n路(n<4,1路对应一个线程)
n*360fps
- 输入图像分辨率:1080p(1920*1080)
- 输出图像分辨率:1080p(1920*1080)
- 输入/输出图片格式:YUV420SP
- n路(n≥4,1路对应一个线程)
1440fps
- 输入图像分辨率:4K图像(3840*2160)
- 输出图像分辨率:4K图像(3840*2160)
- 输入/输出图片格式:YUV420SP
- n路(n<4,1路对应一个线程)
n*90fps
- 输入图像分辨率:4K图像(3840*2160)
- 输出图像分辨率:4K图像(3840*2160)
- 输入/输出图片格式:YUV420SP
- n路(n≥4,1路对应一个线程)
360fps
- 对于8K缩放,单个Device的典型场景性能指标参考如下:
场景举例
总帧率
- 输入图像分辨率:8K图像(7680*4320)
- 输出图像分辨率:1080p(1920*1080)
- 输入/输出图片格式:YUV420SP
- n路(n<4,1路对应一个线程)
n*25fps
- 输入图像分辨率:8K图像(7680*4320)
- 输出图像分辨率:1080p(1920*1080)
- 输入/输出图片格式:YUV420SP
- n路(n≥4,1路对应一个线程)
100fps
- 输入图像分辨率:8K图像(7680*4320)
- 输出图像分辨率:4K图像(3840*2160)
- 输入/输出图片格式:YUV420SP
- n路(n<4,1路对应一个线程)
n*25fps
- 输入图像分辨率:8K图像(7680*4320)
- 输出图像分辨率:4K图像(3840*2160)
- 输入/输出图片格式:YUV420SP
- n路(n≥4,1路对应一个线程)
100fps
性能指标说明(昇腾910 AI处理器)
- 对于非8K缩放,单个Device的基本场景性能指标参考如下:
场景举例
总帧率
- 输入图像分辨率:1080p(1920*1080)
- 输出图像分辨率:1080p(1920*1080)
- 输入/输出图片格式:YUV420SP
- n路(n<16,1路对应一个线程)
n*360fps
- 输入图像分辨率:1080p(1920*1080)
- 输出图像分辨率:1080p(1920*1080)
- 输入/输出图片格式:YUV420SP
- n路(n≥16,1路对应一个线程)
5760fps
- 输入图像分辨率:4K图像(3840*2160)
- 输出图像分辨率:4K图像(3840*2160)
- 输入/输出图片格式:YUV420SP
- n路(n<16,1路对应一个线程)
n*90fps
- 输入图像分辨率:4K图像(3840*2160)
- 输出图像分辨率:4K图像(3840*2160)
- 输入/输出图片格式:YUV420SP
- n路(n≥16,1路对应一个线程)
1440fps
- 对于8K缩放,单个Device的典型场景性能指标参考如下:
场景举例
总帧率
- 输入图像分辨率:8K图像(7680*4320)
- 输出图像分辨率:1080p(1920*1080)
- 输入/输出图片格式:YUV420SP
- n路(n<16,1路对应一个线程)
n*25fps
- 输入图像分辨率:8K图像(7680*4320)
- 输出图像分辨率:1080p(1920*1080)
- 输入/输出图片格式:YUV420SP
- n路(n≥16,1路对应一个线程)
400fps
- 输入图像分辨率:8K图像(7680*4320)
- 输出图像分辨率:4K图像(3840*2160)
- 输入/输出图片格式:YUV420SP
- n路(n<16,1路对应一个线程)
n*25fps
- 输入图像分辨率:8K图像(7680*4320)
- 输出图像分辨率:4K图像(3840*2160)
- 输入/输出图片格式:YUV420SP
- n路(n≥16,1路对应一个线程)
400fps
参考资源
RGB、YUV格式图像的各分量排布示意图。示例:SP图像以YUV420SP为例,Packed和RGB图像以ARGB图像为例。
acldvppVpcResizeAsync
函数功能
将输入图片缩放到输出图片大小,异步接口。
函数原型
aclError acldvppVpcResizeAsync(acldvppChannelDesc *channelDesc,
acldvppPicDesc *inputDesc,
acldvppPicDesc *outputDesc,
acldvppResizeConfig *resizeConfig,
aclrtStream stream)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
channelDesc |
输入 |
指定通道描述信息,与调用acldvppCreateChannel接口创建通道时指定的channelDesc保持一致。 |
inputDesc |
输入 |
输入图片信息。
说明:
在昇腾310 AI处理器上,在昇腾910 AI处理器上,如果输入图片的宽高不是2对齐,VPC会自动处理成向下2对齐,例如输入图片的宽高为15*15,VPC会先处理成14*14,再进行缩放。 |
outputDesc |
输入&输出 |
输出图片信息。 outputDesc参数作为输入时,需要用户调用如下接口:
|
resizeConfig |
输入 |
指定图片缩放配置数据。 调用acldvppCreateResizeConfig接口创建图片缩放配置数据。 |
stream |
输入 |
指定Stream。 |
返回值说明
返回0表示任务下发成功,返回非0表示任务下发失败。
acldvppVpcCropAsync
函数功能
按指定区域从一张输入图片中抠出一张子图,再将抠的图片存放到输出内存中,作为输出图片,异步接口。
输出图片区域与cropArea不一致时会对图片再做一次缩放操作。在昇腾310 AI处理器上,在昇腾910 AI处理器上,默认缩放算法为“华为自研的高阶滤波算法”。
函数原型
aclError acldvppVpcCropAsync(acldvppChannelDesc *channelDesc,
acldvppPicDesc *inputDesc,
acldvppPicDesc *outputDesc,
acldvppRoiConfig *cropArea,
aclrtStream stream)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
channelDesc |
输入 |
指定通道描述信息,与调用acldvppCreateChannel接口创建通道时指定的channelDesc保持一致。 |
inputDesc |
输入 |
输入图片信息。
|
outputDesc |
输入&输出 |
输出图片信息。 outputDesc参数作为输入时,需要用户调用如下接口:
|
cropArea |
输入 |
抠图区域位置。 调用acldvppCreateRoiConfig接口创建区域位置数据。 |
stream |
输入 |
指定Stream。 |
返回值说明
返回0表示任务下发成功,返回非0表示任务下发失败。
参考资源
接口调用流程,参见抠图/缩放。
acldvppVpcCropResizeAsync
按指定区域从一张输入图片中抠出一张子图,再将抠的图片存放到输出内存中,作为输出图片,异步接口。
输出图片区域与cropArea不一致时会对图片再做一次缩放操作,按照resizeConfig处配置的缩放算法。
函数原型
aclError acldvppVpcCropResizeAsync(acldvppChannelDesc *channelDesc, acldvppPicDesc *inputDesc, acldvppPicDesc *outputDesc, acldvppRoiConfig *cropArea, acldvppResizeConfig *resizeConfig, aclrtStream stream)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
channelDesc |
输入 |
指定通道描述信息,与调用acldvppCreateChannel接口创建通道时指定的channelDesc保持一致。 |
inputDesc |
输入 |
输入图片信息。
|
outputDesc |
输入&输出 |
输出图片信息。 outputDesc参数作为输入时,需要用户调用如下接口:
|
cropArea |
输入 |
抠图区域位置。 调用acldvppCreateRoiConfig接口创建区域位置数据。 |
resizeConfig |
输入 |
指定图片缩放配置数据。 需提前调用acldvppCreateResizeConfig接口创建图片缩放配置数据。 |
stream |
输入 |
指定Stream。 |
返回值说明
返回0表示任务下发成功,返回非0表示任务下发失败。
参考资源
接口调用示例,参见抠图缩放(一图一框)。
acldvppVpcBatchCropAsync
函数功能
对于一张或多张输入图片,支持从每个输入图片中抠出一张或多张子图并一一对应存放到多个输出区域,输出图片区域与抠图区域不一致时会对图片再做一次缩放操作。异步接口。
在昇腾310 AI处理器上,在昇腾910 AI处理器上,默认缩放算法为“华为自研的高阶滤波算法”。
函数原型
aclError acldvppVpcBatchCropAsync(acldvppChannelDesc *channelDesc,
acldvppBatchPicDesc *srcBatchPicDescs,
uint32_t *roiNums,
uint32_t size,
acldvppBatchPicDesc *dstBatchPicDescs,
acldvppRoiConfig *cropAreas[],
aclrtStream stream)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
channelDesc |
输入 |
指定通道描述信息,与调用acldvppCreateChannel接口创建通道时指定的channelDesc保持一致。 |
srcBatchPicDescs |
输入 |
指定批量输入图片描述信息。
|
roiNums |
输入 |
表示抠图的数量,当前最大抠图数量为256。 roiNums为数组,数组总和小于等于256,与dstBatchPicDescs结构体中的batchSize值保持一致。 roiNums[0]+...+roiNums[size-1] <= 256 |
size |
输入 |
表示roiNums数组中的元素个数,个数小于等于256。 |
dstBatchPicDescs |
输入&输出 |
指定批量输出图片描述信息。 dstBatchPicDescs参数作为输入时,需要用户调用如下接口:
|
cropAreas |
输入 |
抠图区域位置数组。 调用acldvppCreateRoiConfig接口创建区域位置数据。 |
stream |
输入 |
指定Stream。 |
返回值说明
返回0表示任务下发成功,返回非0表示任务下发失败。
acldvppVpcBatchCropResizeAsync
函数功能
对于一张或多张输入图片,支持从每个输入图片中抠出一张或多张子图并一一对应存放到多个输出区域,输出图片区域与抠图区域不一致时会对图片再做一次缩放操作,按照resizeConfig处配置的缩放算法。异步接口。
函数原型
aclError acldvppVpcBatchCropResizeAsync(acldvppChannelDesc *channelDesc, acldvppBatchPicDesc *srcBatchPicDescs, uint32_t *roiNums, uint32_t size, acldvppBatchPicDesc *dstBatchPicDescs, acldvppRoiConfig *cropAreas[], acldvppResizeConfig *resizeConfig, aclrtStream stream)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
channelDesc |
输入 |
指定通道描述信息,与调用acldvppCreateChannel接口创建通道时指定的channelDesc保持一致。 |
srcBatchPicDescs |
输入 |
指定批量输入图片描述信息。
|
roiNums |
输入 |
表示抠图的数量,当前最大抠图数量为256。 roiNums为数组,数组总和小于等于256,与dstBatchPicDescs结构体中的batchSize值保持一致。 roiNums[0]+...+roiNums[size-1] <= 256 |
size |
输入 |
表示roiNums数组中的元素个数,个数小于等于256。 |
dstBatchPicDescs |
输入&输出 |
指定批量输出图片描述信息。 dstBatchPicDescs参数作为输入时,需要用户调用如下接口:
|
cropAreas |
输入 |
抠图区域位置数组。 调用acldvppCreateRoiConfig接口创建区域位置数据。 |
resizeConfig |
输入 |
指定图片缩放配置数据。 需提前调用acldvppCreateResizeConfig接口创建图片缩放配置数据。 |
stream |
输入 |
指定Stream。 |
返回值说明
返回0表示任务下发成功,返回非0表示任务下发失败。
acldvppVpcCropAndPasteAsync
函数功能
按指定区域从一个输入图片中抠出一张子图,再将抠的子图贴到目标图片的指定位置,作为输出图片。异步接口。
当pasteArea的宽高与cropArea的宽高不一致时会对图片做一次缩放操作。在昇腾310 AI处理器上,在昇腾910 AI处理器上,默认缩放算法为“华为自研的高阶滤波算法”。
函数原型
aclError acldvppVpcCropAndPasteAsync(acldvppChannelDesc *channelDesc,
acldvppPicDesc *inputDesc,
acldvppPicDesc *outputDesc,
acldvppRoiConfig *cropArea,
acldvppRoiConfig *pasteArea,
aclrtStream stream)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
channelDesc |
输入 |
指定通道描述信息,与调用acldvppCreateChannel接口创建通道时指定的channelDesc保持一致。 |
inputDesc |
输入 |
输入图片信息。
|
outputDesc |
输入&输出 |
输出图片信息。 outputDesc参数作为输入时,需要用户调用如下接口:
|
cropArea |
输入 |
抠图区域位置。 调用acldvppCreateRoiConfig接口创建区域位置数据。 |
pasteArea |
输入 |
贴图区域位置。
|
stream |
输入 |
指定Stream。 |
返回值说明
返回0表示任务下发成功,返回非0表示任务下发失败。
acldvppVpcCropResizePasteAsync
函数功能
按指定区域从一个输入图片中抠出一张子图,再将抠的子图贴到目标图片的指定位置,作为输出图片。异步接口。
当pasteArea的宽高与cropArea的宽高不一致时会对图片做一次缩放操作,按照resizeConfig处配置的缩放算法。
函数原型
aclError acldvppVpcCropResizePasteAsync(acldvppChannelDesc *channelDesc, acldvppPicDesc *inputDesc, acldvppPicDesc *outputDesc, acldvppRoiConfig *cropArea, acldvppRoiConfig *pasteArea, acldvppResizeConfig *resizeConfig, aclrtStream stream)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
channelDesc |
输入 |
指定通道描述信息,与调用acldvppCreateChannel接口创建通道时指定的channelDesc保持一致。 |
inputDesc |
输入 |
输入图片信息。
|
outputDesc |
输入&输出 |
输出图片信息。 outputDesc参数作为输入时,需要用户调用如下接口:
|
cropArea |
输入 |
抠图区域位置。 调用acldvppCreateRoiConfig接口创建区域位置数据。 |
pasteArea |
输入 |
贴图区域位置。
|
resizeConfig |
输入 |
指定图片缩放配置数据。 需提前调用acldvppCreateResizeConfig接口创建图片缩放配置数据。 |
stream |
输入 |
指定Stream。 |
返回值说明
返回0表示任务下发成功,返回非0表示任务下发失败。
参考资源
接口调用示例,参见抠图贴图缩放(一图一框)。
acldvppVpcBatchCropAndPasteAsync
函数功能
按指定区域从一张或多张输入图片中抠出一个或多个子图,再将抠的子图贴到目标图片的指定位置,作为输出图片。异步接口。
当pasteArea的宽高与cropArea的宽高不一致时会对图片做一次缩放操作。
在昇腾310 AI处理器上,在昇腾910 AI处理器上,默认缩放算法为“华为自研的高阶滤波算法”。
函数原型
aclError acldvppVpcBatchCropAndPasteAsync (acldvppChannelDesc *channelDesc,
acldvppBatchPicDesc *srcBatchPicDescs,
uint32_t *roiNums,
uint32_t size,
acldvppBatchPicDesc *dstBatchPicDescs,
acldvppRoiConfig *cropAreas[],
acldvppRoiConfig *pasteAreas[],
aclrtStream stream)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
channelDesc |
输入 |
指定通道描述信息,与调用acldvppCreateChannel接口创建通道时指定的channelDesc保持一致。 |
srcBatchPicDescs |
输入 |
指定批量输入图片描述信息。
|
roiNums |
输入 |
指定每个输入图片的抠图数量,当前最大抠图数量为256。 roiNums为数组,数组总和小于等于256,与dstBatchPicDescs结构体中的batchSize值保持一致。 roiNums[0]+...+roiNums[size-1] <= 256 |
size |
输入 |
表示roiNums数组中的元素个数,个数小于等于256。 |
dstBatchPicDescs |
输入&输出 |
指定批量输出图片描述信息。 dstBatchPicDescs参数作为输入时,需要用户调用如下接口:
|
cropAreas |
输入 |
抠图区域位置数组。
|
pasteAreas |
输入 |
贴图区域位置。
|
stream |
输入 |
指定Stream。 |
返回值说明
返回0表示任务下发成功,返回非0表示任务下发失败。
参考资源
接口调用示例,参见抠图贴图(一图多框)。
acldvppVpcBatchCropResizePasteAsync
函数功能
在昇腾310 AI处理器上,在昇腾910 AI处理器上,按指定区域从一张或多张输入图片中抠出一个或多个子图,再将抠的子图贴到目标图片的指定位置,作为输出图片。异步接口。
当pasteArea的宽高与cropArea的宽高不一致时会对图片做一次缩放操作,按照resizeConfig处配置的缩放算法。
函数原型
aclError acldvppVpcBatchCropResizePasteAsync(acldvppChannelDesc *channelDesc, acldvppBatchPicDesc *srcBatchPicDescs, uint32_t *roiNums, uint32_t size, acldvppBatchPicDesc *dstBatchPicDescs, acldvppRoiConfig *cropAreas[], acldvppRoiConfig *pasteAreas[], acldvppResizeConfig *resizeConfig, aclrtStream stream)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
channelDesc |
输入 |
指定通道描述信息,与调用acldvppCreateChannel接口创建通道时指定的channelDesc保持一致。 |
srcBatchPicDescs |
输入 |
指定批量输入图片描述信息。
|
roiNums |
输入 |
指定每个输入图片的抠图数量,当前最大抠图数量为256。 roiNums为数组,数组总和小于等于256,与dstBatchPicDescs结构体中的batchSize值保持一致。 roiNums[0]+...+roiNums[size-1] <= 256 |
size |
输入 |
表示roiNums数组中的元素个数,个数小于等于256。 |
dstBatchPicDescs |
输入&输出 |
指定批量输出图片描述信息。 dstBatchPicDescs参数作为输入时,需要用户调用如下接口:
|
cropAreas |
输入 |
抠图区域位置数组。
|
pasteAreas |
输入 |
贴图区域位置。
|
resizeConfig |
输入 |
指定图片缩放配置数据。 需提前调用acldvppCreateResizeConfig接口创建图片缩放配置数据。 |
stream |
输入 |
指定Stream。 |
返回值说明
返回0表示任务下发成功,返回非0表示任务下发失败。
acldvppVpcBatchCropResizeMakeBorderAsync
函数功能
按指定区域从一张或多张输入图片中抠出一个或多个子图,再将抠的子图贴到目标图片的指定位置,作为输出图片。异步接口。
当pasteArea的宽高与cropArea的宽高不一致时会对图片做一次缩放操作,按照resizeConfig处配置的缩放算法。
昇腾310 AI处理器,当前版本不支持该接口。
昇腾910 AI处理器,当前版本不支持该接口。
函数原型
aclError acldvppVpcBatchCropResizeMakeBorderAsync(acldvppChannelDesc *channelDesc, acldvppBatchPicDesc *srcBatchPicDescs, uint32_t *roiNums, uint32_t size, acldvppBatchPicDesc *dstBatchPicDescs, acldvppRoiConfig *cropAreas[], acldvppBorderConfig *borderCfgs[], acldvppResizeConfig *resizeConfig, aclrtStream stream)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
channelDesc |
输入 |
指定通道描述信息,与调用acldvppCreateChannel接口创建通道时指定的channelDesc保持一致。 |
srcBatchPicDescs |
输入 |
指定批量输入图片描述信息。
|
roiNums |
输入 |
指定每个输入图片的抠图数量,当前最大抠图数量为256。 roiNums为数组,数组总和小于等于256,与dstBatchPicDescs结构体中的batchSize值保持一致。 roiNums[0]+...+roiNums[size-1] <= 256 |
size |
输入 |
表示roiNums数组中的元素个数,个数小于等于256。 |
dstBatchPicDescs |
输入&输出 |
指定批量输出图片描述信息。 dstBatchPicDescs参数作为输入时,需要用户调用如下接口:
|
cropAreas |
输入 |
抠图区域位置数组。 需提前调用acldvppCreateRoiConfig接口创建区域位置数据。 cropAreas、borderCfgs数组中的元素个数与dstBatchPicDescs结构体中的batchSize值相等。 |
borderCfgs |
输入 |
扩边填充配置数组。 borderCfgs数组中的元素与cropAreas数组中的元素一一对应。 扩边填充配置参数中的borderType参数值仅支持BORDER_CONSTANT。 |
resizeConfig |
输入 |
指定图片缩放配置数据。 需提前调用acldvppCreateResizeConfig接口创建图片缩放配置数据。 VPC进行缩放处理时,缩放后的宽/高是输出图片的宽/高减去扩边的值。 |
stream |
输入 |
指定Stream。 |
返回值说明
返回0表示任务下发成功,返回非0表示任务下发失败。
acldvppVpcConvertColorAsync
函数功能
对输入图片进行进行色域转换,输出图片的宽高须与输入图片的宽高一致。异步接口。
昇腾310 AI处理器,当前版本不支持该接口。
昇腾910 AI处理器,当前版本不支持该接口。
函数原型
aclError acldvppVpcConvertColorAsync(acldvppChannelDesc *channelDesc,
acldvppPicDesc *inputDesc,
acldvppPicDesc *outputDesc,
aclrtStream stream)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
channelDesc |
输入 |
指定通道描述信息,与调用acldvppCreateChannel接口创建通道时指定的channelDesc保持一致。 |
inputDesc |
输入 |
输入图片信息。
|
outputDesc |
输入&输出 |
输出图片信息。 outputDesc参数作为输入时,需要用户调用如下接口:
|
stream |
输入 |
指定Stream。 |
返回值说明
返回0表示任务下发成功,返回非0表示任务下发失败。
acldvppVpcPyrDownAsync
函数功能
对图像进行金字塔缩放,将输出图片缩放为输入图片的一半。异步接口。
昇腾310 AI处理器,当前版本不支持该接口。
昇腾910 AI处理器,当前版本不支持该接口。
函数原型
aclError acldvppVpcPyrDownAsync(acldvppChannelDesc *channelDesc,
acldvppPicDesc *inputDesc,
acldvppPicDesc *outputDesc,
void *reserve,
aclrtStream stream)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
channelDesc |
输入 |
指定通道描述信息,与调用acldvppCreateChannel接口创建通道时指定的channelDesc保持一致。 |
inputDesc |
输入 |
输入图片信息。
|
outputDesc |
输入&输出 |
输出图片信息。 outputDesc参数作为输入时,需要用户调用如下接口:
|
reserve |
输入 |
预留金字塔缩放配置参数。 |
stream |
输入 |
指定Stream。 |
返回值说明
返回0表示任务下发成功,返回非0表示任务下发失败。
acldvppVpcEqualizeHistAsync
函数功能
实现图片的色彩重映射。异步接口。
昇腾310 AI处理器,当前版本不支持该接口。
昇腾910 AI处理器,当前版本不支持该接口。
函数原型
aclError acldvppVpcEqualizeHistAsync(const acldvppChannelDesc *channelDesc,
const acldvppPicDesc *inputDesc,
acldvppPicDesc *outputDesc,
const acldvppLutMap *lutMap,
aclrtStream stream)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
channelDesc |
输入 |
指定通道描述信息,与调用acldvppCreateChannel接口创建通道时指定的channelDesc保持一致。 |
inputDesc |
输入 |
输入图片信息。
|
outputDesc |
输入&输出 |
输出图片信息。 outputDesc参数作为输入时,需要用户调用如下接口:
|
lutMap |
输入 |
色彩重映射表。 调用acldvppCreateLutMap接口创建acldvppLutMap类型的数据(表示色彩重映射表),再调用acldvppGetLutMapData获取内存指针,由用户自行向该内存中写入色彩重映射表数据,写完数据后,再将acldvppLutMap类型的数据作为入参传入acldvppVpcEqualizeHistAsync。 |
stream |
输入 |
指定Stream。 |
返回值说明
返回0表示任务下发成功,返回非0表示任务下发失败。
acldvppVpcMakeBorderAsync
函数功能
实现图片边界填充功能。异步接口。
昇腾310 AI处理器,当前版本不支持该接口。
昇腾910 AI处理器,当前版本不支持该接口。
函数原型
aclError acldvppVpcMakeBorderAsync(const acldvppChannelDesc *channelDesc,
const acldvppPicDesc *inputDesc,
acldvppPicDesc *outputDesc,
const acldvppBorderConfig *borderConfig,
aclrtStream stream)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
channelDesc |
输入 |
指定通道描述信息,与调用acldvppCreateChannel接口创建通道时指定的channelDesc保持一致。 |
inputDesc |
输入 |
输入图片信息。
|
outputDesc |
输入&输出 |
输出图片信息。 outputDesc参数作为输入时,需要用户调用如下接口:
|
borderConfig |
输入 |
填充边界配置。 调用acldvppCreateBorderConfig接口创建填充边界配置。 |
stream |
输入 |
指定Stream。 |
返回值说明
返回0表示任务下发成功,返回非0表示任务下发失败。
acldvppVpcCalcHistAsync
函数功能
统计图像中每个像素的各颜色分量的分布。异步接口。
昇腾310 AI处理器,当前版本不支持该接口。
昇腾910 AI处理器,当前版本不支持该接口。
函数原型
aclError acldvppVpcCalcHistAsync(acldvppChannelDesc *channelDesc,
acldvppPicDesc *srcPicDesc,
acldvppHist *hist,
void *reserve,
aclrtStream stream)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
channelDesc |
输入 |
指定通道描述信息,与调用acldvppCreateChannel接口创建通道时指定的channelDesc保持一致。 |
srcPicDesc |
输入 |
输入图片信息。
|
hist |
输入&输出 |
调用acldvppCreateHist接口创建直方图描述信息作为输入。 调用本接口后,输出每张图像各颜色分量的像素值(0-255)分布情况。 |
reserve |
输入 |
直方图统计配置,预留,当前可填NULL。 |
stream |
输入 |
指定Stream。 |
返回值说明
返回0表示任务下发成功,返回非0表示任务下发失败。
- 功能及约束说明
- acldvppVpcResizeAsync
- acldvppVpcCropAsync
- acldvppVpcCropResizeAsync
- acldvppVpcBatchCropAsync
- acldvppVpcBatchCropResizeAsync
- acldvppVpcCropAndPasteAsync
- acldvppVpcCropResizePasteAsync
- acldvppVpcBatchCropAndPasteAsync
- acldvppVpcBatchCropResizePasteAsync
- acldvppVpcBatchCropResizeMakeBorderAsync
- acldvppVpcConvertColorAsync
- acldvppVpcPyrDownAsync
- acldvppVpcEqualizeHistAsync
- acldvppVpcMakeBorderAsync
- acldvppVpcCalcHistAsync