BackgroundReplace
函数功能
背景替换接口,将输入的新的背景图片与已有图片进入融合,通过掩膜的方式将背景替换为新的背景(即dst = backgroud*(1-mask)+ replace*mask)。支持异步调用。
当“background”和“dst”为同一个Tensor时,可以实现inplace替换。
当前仅支持Atlas 推理系列产品。
该接口需要依赖CANN 8.0.RC1或CANN 8.0.RC1以后的版本。
使用时需满足以下条件:
- 接口中输入输出Tensor的数据内存及stream需位于同一Device中。
- 同步场景下,输入输出Tensor数据内存所在Device需与初始化的Device一致。
- 各输入、输出的宽高可以不一致,计算时取最小的有效区域进行替换。有效区域为张量本身,如张量设置了引用区域,则有效区域为引用区域。
函数原型
APP_ERROR BackgroundReplace(Tensor &background, const Tensor &replace, const Tensor &mask, Tensor &dst, AscendStream &stream = AscendStream::DefaultStream());
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
background |
输入 |
Tensor类,输入张量,被替换的目标张量,支持float16、uint8类型,维度支持HW(二维)、HWC(三维)、其中“C”(通道数)为“1”或“3”,张量宽度支持[1,4096],张量高度支持[1,4096],数据内存必须在Device侧或DVPP侧。 |
replace |
输入 |
Tensor类,输入张量,替换的张量,支持float16、uint8类型,维度支持HW(二维)、HWC(三维)、其中“C”(通道数)为1或3,张量宽度支持[1,4096],张量高度支持[1,4096],数据内存必须在Device侧或DVPP侧。数据类型和维度(包括C)必须和background一致。 |
mask |
输入 |
Tensor类,输入张量,mask的张量,支持float16,维度支持HW(二维)、HWC(三维),当“background”和“replace”的“C”为“1”时,“C”支持“1”,当“background”和“replace”的“C”为3时,“C”支持“1”和“3”,张量宽度支持[1,4096],张量高度支持[1,4096],数据内存必须在Device侧或DVPP侧。 |
dst |
输出 |
Tensor类,输出张量,替换的结果张量,支持float16、uint8类型,维度支持HW(二维)、HWC(三维)、其中“C”(通道数)为“1”或“3”,张量宽度支持[1,4096],张量高度支持[1,4096],数据内存必须在Device侧或DVPP侧。数据类型和维度(包括C)必须和“background”一致。 如果不为空,需要调用Tensor.Malloc()接口提前分配内存。支持传入空tensor,输出tensor的数据类型、维度和“background”一致,宽度为“background”、“mask”、“dst”有效区域宽度的最小值,高度为“background”、“mask”、“dst”有效区域高度的最小值。 |
stream |
输入 |
AscendStream类型,默认值为“AscendStream::DefaultStream()”。当参数值为默认值时,接口为同步操作,其他情况下,接口为异步操作。 |
返回参数说明
数据结构 |
说明 |
---|---|
APP_ERROR |
程序执行返回的错误码,请参考APP_ERROR说明。 |