You need to enable JavaScript to run this app.
导航
背景分割(PortraitMatting)
最近更新时间:2025.03.14 10:08:16首次发布时间:2025.03.14 10:08:16
我的收藏
有用
有用
无用
无用

背景分割 SDK提供从图像中实时提取人体轮廓的能力,支持多人同时分割,具备稳定性高、性能开销低、速度快等特点。
详细接口说明查看头文件:PortraitMatting.h

1.创建人体分割句柄
int HeidiPortraitMattingCreateHandle(HeidiHandle *handle);

参数说明

参数名参数类型参数说明
handleHeidiHandle创建的人体分割的检测句柄

返回值
成功返回 HEIDI_CODE_SUC, 失败返回相应错误码, 具体请参考 HeidiPublicDefines.h

2.从文件设置模型
int HeidiPortraitMattingSetModel(
HeidiHandle handle, 
HeidiMattingModelType type, 
const char * strModelPath
);

参数说明

参数名参数类型参数说明
handleHeidiHandle人体分割的检测句柄
typeHeidiMattingModelType模型类型,目前分大小模型,参见HeidiMattingModelType
param_pathconst char*模型文件的路径

返回值
成功返回 HEIDI_CODE_SUC, 失败返回相应错误码, 具体请参考 HeidiPublicDefines.h

3.设置SDK参数
int HeidiPortraitMattingSetParam(
HeidiHandle handle,
HeidiMattingParamType type,
float value
)

参数说明

参数名参数类型参数说明
handleHeidiHandle人体分割的检测句柄
typeHeidiMattingParamType算法参数,用来设置边界的模式、强制预测、短边长度,参考HeidiMattingParamType
valueint默认为1

备注
HeidiMattingParamType 详细见PortraitMatting.h

/*
 * SDK参数
 * edge_mode:
 *    算法参数,用来设置边界的模式
 *    - 0: 不加边界
 *    - 1: 加边界
 *    - 2: 加边界, 其中, 2 和 3 策略不太一样,但效果上差别不大,可随意取一个
 * fresh_every:
 *    算法参数,设置调用多少次强制做预测,目前设置 15 即可
 * MP_OutputMinSideLen:
 *    返回短边的长度, 默认值为128, 需要为16的倍数;
 * MP_OutputWidth 不设置,只做GetParam 兼容之前的调用
 * MP_OutputHeight 不设置,只做GetParam 兼容之前的接口;
 **/
typedef enum {
    HEIDI_MP_EdgeMode = 0,
    HEIDI_MP_FrashEvery = 1,
    HEIDI_MP_OutputMinSideLen = 2,
    HEIDI_MP_OutputWidth = 3,
    HEIDI_MP_OutputHeight = 4,
}HeidiMattingParamType;

返回值
成功返回 HEIDI_CODE_SUC, 失败返回相应错误码, 具体请参考 HeidiPublicDefines.h

4.获取参数
int HeidiPortraitMattingGetParam(
HeidiHandle handle, 
HeidiMattingParamType type, 
int *value
);

参数说明

参数名参数类型参数说明
handleHeidiHandle人体分割的检测句柄
typeHeidiMattingParamType算法参数,用来设置边界的模式、强制预测、短边长度,参考HeidiMattingParamType
valueint*输出参数

返回值
成功返回 HEIDI_CODE_SUC, 失败返回相应错误码, 具体请参考 HeidiPublicDefines.h

5.获取输出mask的尺寸
int HeidiPortraitMattingGetOutputShape(
HeidiHandle handle, 
int width, 
int height, 
int *output_width, 
int *output_height
);

参数说明

参数名参数类型参数说明
handleHeidiHandle人体分割的检测句柄
widthint输入图的宽度
heightint输入图的高度
output_widthint*输出mask的宽度
output_heightint*输出mask的高度

返回值
成功返回 HEIDI_CODE_SUC, 失败返回相应错误码, 具体请参考 HeidiPublicDefines.h

6.进行分割操作
int HeidiPortraitMattingDetect(
HeidiHandle handle,
const unsigned char *src_image_data,
ColorSpaceType pixel_format,
int width,
int height,
int image_stride,
ClockwiseRotateType orient,
bool need_flip_alpha,
HeidiMattingRet *ret
);

参数说明

参数名参数类型参数说明
handleHeidiHandle人体分割的检测句柄
src_image_dataconst unsigned char*为传入图像的大小
pixel_formatColorSpaceType传入图像的类型
widthint传入图像的宽
heightint传入图像的高
image_strideint传入图像的步长
orientClockwiseRotateType传入图像旋转角
need_flip_alphabool传出图像是否需要翻转
retHeidiMattingRet*传出图像

返回值
成功返回 HEIDI_CODE_SUC, 失败返回相应错误码, 具体请参考 HeidiPublicDefines.h

7.释放句柄
int HeidiPortraitMattingReleaseHandle(HeidiHandle handle);

参数说明

参数名参数类型参数说明
handleHeidiHandle人体分割的检测句柄
8.人体分割授权
int HeidiPortraitMattingCheckLicense(
HeidiHandle handle, 
const char* licensePath
);

参数说明

参数名参数类型参数说明
handleHeidiHandle人体分割的检测句柄
licensePathconst char *授权文件字符串

返回值
成功返回 HEIDI_CODE_SUC, 失败返回相应错误码, 具体请参考 HeidiPublicDefines.h