1. 程式人生 > 程式設計 >利用Python程式碼實現一鍵摳背景功能

利用Python程式碼實現一鍵摳背景功能

前言

又是一個逛csdn發現的一個有趣的小專案,可以一鍵摳背景,需要用到removebg模組及其API,API可從其官網免費獲取,網址如下https://www.remove.bg/zh

ps:加上/zh後,網頁內容會顯示中文

  1. 首先是安裝removebg模組
  2. 然後就敲程式碼了,官方使用文件是個好東西,應該好好利用

有趣的是,意外發現了兩種使用API的方法

1.用到爬蟲的知識,利用requests模組,從網頁上呼叫,直接實現摳背景

# Requires "requests" to be installed (see python-requests.org)
import requests

response = requests.post(
 'https://api.remove.bg/v1.0/removebg',files={'image_file': open('/path/to/file.jpg','rb')},data={'size': 'auto'},headers={'X-Api-Key': 'INSERT_YOUR_API_KEY_HERE'},)
if response.status_code == requests.codes.ok:
 with open('no-bg.png','wb') as out:
 out.write(response.content)
else:
 print("Error:",response.status_code,response.text)

效果如下:

2.參照removebg庫中的使用說明呼叫API,用相關程式碼實現摳背景

從gitub上下載removebg庫原始碼時會有一個使用說明,即README.md,連結如下
https://github.com/brilam/remove-bg


上程式碼,這裡就只展示處理單張圖片的程式碼,批量處理圖片以及根據url處理圖片的相關程式碼均在README.md中有展示

from removebg import RemoveBg
# 摳單張圖片
rmbg = RemoveBg("xxxxx","error.log") # 引號內是你獲取的API
rmbg.remove_background_from_img_file(r"C:\Users\Lenovo\PycharmProjects\爬蟲\長頸鹿1.jpg",size='regular') # 圖片地址

效果如下


from removebg import RemoveBg
# 摳單張圖片
rmbg = RemoveBg("P3UCVZzKiUxW7BbkmcRYhgTB",size='regular',bg_color='e.g.red') # 圖片地址

但奇怪的是加上填充純色背景的屬性bg_color='e.g.red'後會有這樣的報錯,尚未解決

後來使用了PIL庫來實現背景的填充

from PIL import Image

# 載入已去背景的影象
im = Image.open('./pic/no-bg.png')
x,y = im.size

try:
 # 填充紅色背景
 p = Image.new('RGBA',im.size,(255,0))
 p.paste(im,(0,x,y),im) #paste的背景尺寸需與原圖尺寸相同
 # 儲存填充後的圖片
 p.save('./pic/no-bg_red_bg.png')
 p.show() #顯示處理後的圖片
except:
 with open('./error1.log','a') as f:
 f.write('background change fail .')

效果如下

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對我們的支援。