请选择 进入手机版 | 继续访问电脑版

马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#问题入口 ASP.NET问题入口

【C#问题提交】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接毕业设计】 面试-葵花宝典下载

官方一群:

官方二群:

查看: 102|回复: 0

从图片中把人物抠出来

[复制链接]
  • TA的每日心情
    开心
    昨天 09:42
  • 签到天数: 1446 天

    [LV.10]以坛为家III

    926

    主题

    2828

    帖子

    9万

    积分

    管理员

    IBC编程社区-原道楠

    Rank: 9Rank: 9Rank: 9

    积分
    92121

    推广达人突出贡献优秀版主荣誉管理论坛元老

    发表于 2019-8-13 18:03:07 | 显示全部楼层 |阅读模式

    马上加入IBC,查看更多教程

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x

    图片中物体(人物,动物或其它特定物品)的精确识别与提取是人工智能范畴重要的一个方面,通过机器学习,最终能达到不需要人工干预准确的进行识别。

    以云服务的方式提供

    由于这些算法依赖于大量的训练或基础数据,以是,对于一些成果,以静态的算法,每个应用独立去完成漫漫的训练不是个好办法。因此,很多雷同的成果会以一种 api 服务接口方式提供,当然服务可能需要付费,但一般有一定的免费量。

    使用 removeBG

    removeBG 就是这样一种服务,其详细的 api 接口详见 https://www.remove.bg/api,它使用简单,就一个 api 并且提供了多种语言的调用示例。api 免费使用量的限制为每月50次调用

    C# 使用示例

    (1)获取 api 密钥

    注册登录后,在 My Account 中可以查看到 apiKey,实现的方法中需要用到。

    180505rkgdhgyvyvqx666j.png

    (2)根据示例代码形成易调用方法

    这里,需求定义为,传入图片 url,返回提取结果的 url。
    则方法实现如下:

    1. <code>private string Cutout(string picUrl)
    2. {
    3. if (String.IsNullOrEmpty(picUrl)) throw new Exception("空空如也");
    4. using (var client = new HttpClient())
    5. using (var formData = new MultipartFormDataContent())
    6. {
    7. // 申请的 apikey 可考虑动态的调整
    8. string key = "myremovebgapikey"; // apiKey
    9. formData.Headers.Add("X-Api-Key", key);
    10. formData.Add(new StringContent(picUrl), "image_url");
    11. formData.Add(new StringContent("auto"), "size");
    12. var response = client.PostAsync("https://api.remove.bg/v1.0/removebg", formData).Result;
    13. if (response.IsSuccessStatusCode)
    14. {
    15. string imgName = DateTime.Now.ToString("yyyyMMddHHmmss");
    16. FileStream fileStream = new FileStream(HttpContext.Current.Server.MapPath(String.Format("~/images/{0}.png", imgName)), FileMode.Create, FileAccess.Write, FileShare.None);
    17. response.Content.CopyToAsync(fileStream).ContinueWith((copyTask) => { fileStream.Close(); });
    18. string imgUrl = String.Format("http://mydomain/images/{0}.png", imgName);
    19. return imgUrl;
    20. }
    21. else
    22. {
    23. throw new Exception(response.Content.ReadAsStringAsync().Result);
    24. }
    25. }
    26. }
    27. </code>
    复制代码

    示例体验

    如下图,左边的图片,去除背景,抠出的人物效果如右图。图片会是背景透明的 png 文件,很方便自已添加背景。

    180506bpc8eroccbpcrcxy.png

    操作方式

    关注公众号“时间维度”:

    180507b5pkyvi5ddvlqyvl.jpg

    发送带有人物的图片即可。有使用量限制,哈哈!


    来源:https://www.cnblogs.com/timeddd/p/11324682.html
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则