人像分割

对于输入的一张图片(可正常解码,且长宽比适宜),识别人体的轮廓范围,与背景进行分离,适用于拍照背景替换、照片合成、身体特效等场景。输入正常人像图片,返回分割后的二值结果图和分割类型(目前仅支持person)
分割效果示意图:

1)原图

2)二值图

3)灰度图

4)前景人像图(透明背景)

注:返回的二值图像需要进行二次处理才可查看分割效果;灰度图和前景人像图不用处理,直接解码保存图片即可

public void sample(AipBodyAnalysis client) {
    // 传入可选参数调用接口
    HashMap<String, String> options = new HashMap<String, String>();
    options.put("type", "labelmap");


    // 参数为本地路径
    String image = "test.jpg";
    JSONObject res = client.bodySeg(image, options);
    System.out.println(res.toString(2));

    // 参数为二进制数组
    byte[] file = readFile("test.jpg");
    res = client.bodySeg(file, options);
    System.out.println(res.toString(2));
}

人像分割 请求参数详情

参数名称 是否必选 类型 说明
image mixed 本地图片路径或者图片二进制数据
type String 可以通过设置type参数,自主设置返回哪些结果图,避免造成带宽的浪费
1)可选值说明:
labelmap - 二值图像,需二次处理方能查看分割效果
scoremap - 人像前景灰度图
foreground - 人像前景抠图,透明背景
2)type 参数值可以是可选值的组合,用逗号分隔;如果无此参数默认输出全部3类结果图

人像分割 返回数据参数详情

字段 是否必选 类型 说明
labelmap string 分割结果图片,base64编码之后的二值图像,需二次处理方能查看分割效果
scoremap string 分割后人像前景的scoremap,归一到0-255,不用进行二次处理,直接解码保存图片即可。Base64编码后的灰度图文件,图片中每个像素点的灰度值 = 置信度 * 255,置信度为原图对应像素点位于人体轮廓内的置信度,取值范围[0, 1]
foreground string 分割后的人像前景抠图,透明背景,Base64编码后的png格式图片,不用进行二次处理,直接解码保存图片即可。将置信度大于0.5的像素抠出来,并通过image matting技术消除锯齿
log_id int64 唯一的log id,用于问题定位

人像分割 返回示例

{
    "log_id": 716033439,
    "labelmap": "xxxx",
    "scoremap": "xxxx",
    "foreground": "xxxx"
}