今天测试了百度人体分析,感觉总体不错,但是还是没抠好, 系统没判断到手掌在桌面,但头发过分了。首先缺陷在于百度没有分析光源方向, 区分阴影做得不到位,你用底色算法看看头发区域明显都黑中带点淡淡蓝青色的,很难吗?都不难。
黑色去除,保留底色效果。
{
private void btn百度人体分析_Click(object sender, EventArgs e)
{//人体抠图分割
//图片大小超限,要求base64编码后大小不超过4M,最短边至少50px,最长边最大4096px ,建议长宽比3:1以内,图片请求格式支持:PNG、JPG、BMP
string APP_ID = "XXX";
string API_KEY = "XXXXXX";
string SECRET_KEY = "XXXXXXXXXXXXXXXXXXXXX";
var client = new Baidu.Aip.BodyAnalysis.Body(API_KEY, SECRET_KEY);//鉴权,提交申请的账号密钥
client.Timeout = 60000; // 修改超时时间
var options = new Dictionary<string, object> { { "type", "foreground" } };
// 调用人像分割,可能会抛出网络等异常,请使用try/catch捕获
var result = client.BodySeg(BitmapToBytes(bitmapOp), options); //File.ReadAllBytes("图片文件路径");
Base64ToImage(result["foreground"].ToString());//分割后的人像前景抠图,
} //按钮点击执行结束
public void Base64ToImage(string base64) //编码转换为图像
{
byte[] bytes = Convert.FromBase64String(base64);
MemoryStream memStream = new MemoryStream(bytes);
pBoxA.Image = Image.FromStream(memStream);
}