圖片中物體(人物,動物或其它特定物品)的精確識別與提取是人工智慧領域重要的一個方面,通過機器學習,最終能達到不需要人工干預準確的進行識別。 以雲服務的方式提供 由於這些演算法依賴於大量的訓練或基礎數據,所以,對於一些成果,以靜態的演算法,每個應用獨立去完成漫漫的訓練不是個好辦法。因此,很多類似的成果會以 ...
圖片中物體(人物,動物或其它特定物品)的精確識別與提取是人工智慧領域重要的一個方面,通過機器學習,最終能達到不需要人工干預準確的進行識別。
以雲服務的方式提供
由於這些演算法依賴於大量的訓練或基礎數據,所以,對於一些成果,以靜態的演算法,每個應用獨立去完成漫漫的訓練不是個好辦法。因此,很多類似的成果會以一種 api 服務介面方式提供,當然服務可能需要付費,但一般有一定的免費量。
使用 removeBG
removeBG 就是這樣一種服務,其詳細的 api 介面詳見 https://www.remove.bg/api,它使用簡單,就一個 api 並且提供了多種語言的調用示例。api 免費使用量的限製為每月50次調用。
C# 使用示例
(1)獲取 api 密鑰
註冊登錄後,在 My Account 中可以查看到 apiKey,實現的方法中需要用到。
(2)根據示例代碼形成易調用方法
這裡,需求定義為,傳入圖片 url,返回提取結果的 url。
則方法實現如下:
private string Cutout(string picUrl)
{
if (String.IsNullOrEmpty(picUrl)) throw new Exception("空空如也");
using (var client = new HttpClient())
using (var formData = new MultipartFormDataContent())
{
// 申請的 apikey 可考慮動態的調整
string key = "myremovebgapikey"; // apiKey
formData.Headers.Add("X-Api-Key", key);
formData.Add(new StringContent(picUrl), "image_url");
formData.Add(new StringContent("auto"), "size");
var response = client.PostAsync("https://api.remove.bg/v1.0/removebg", formData).Result;
if (response.IsSuccessStatusCode)
{
string imgName = DateTime.Now.ToString("yyyyMMddHHmmss");
FileStream fileStream = new FileStream(HttpContext.Current.Server.MapPath(String.Format("~/images/{0}.png", imgName)), FileMode.Create, FileAccess.Write, FileShare.None);
response.Content.CopyToAsync(fileStream).ContinueWith((copyTask) => { fileStream.Close(); });
string imgUrl = String.Format("http://mydomain/images/{0}.png", imgName);
return imgUrl;
}
else
{
throw new Exception(response.Content.ReadAsStringAsync().Result);
}
}
}
示例體驗
如下圖,左邊的圖片,去除背景,摳出的人物效果如右圖。圖片會是背景透明的 png 文件,很方便自已添加背景。
操作方式
關註公眾號“時間維度”:
發送帶有人物的圖片即可。有使用量限制,哈哈!