又到了一次交個人資訊表的時候了,在word照片框貼照片時發現自己之前放在e盤的電子照片不見了,我丢。之前去照相館就隻留了一張底片,疫情目前(打遊戲懶得出門),作為時代好青年,出門拍照是不可能的,為一張電子照掏錢這輩子都不可能的。我就上網找有沒有好用的api可以拉拉線,做幾張證件照。沒想到還真找到了。
沒錯,就是這個網站,看起來還挺不錯,提供了api給開發者(菜鳥人員)友善快捷地進行摳圖(沙雕)。
熟悉的注冊登入後,點選api那裡,擷取一個密鑰,一個月可以免費試用50次摳圖。
然後就可以摳圖了。可以将你的照片隻保留你的肖像,其他的地方切換為白色背景。
下一步操作
接下來就需要将白色背景換成紅色或者藍色了,這就需要用到一個Image的子產品了,然後去cmd下載下傳就好了。
pip install Image
然後你就會驚奇地發現
沒錯,報錯了。
這個需要給它注明安裝的路徑,或者可以直接使用映像檔案進行處理。我用了清華的但是也不行,就換了一個豆瓣的,結果是肯定的(不然我還敢在這裡沙雕?)。
pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com --target=d:pythonpython37libsite-packages Image
success開頭一般都是吉祥的。這樣就好了。
實圖與效果圖如下:(為了和諧頁面,我打了碼)
最後就是代碼了。
#導入庫
import os
from PIL import Image
from PIL import ImageDraw,ImageFont
from removebg import RemoveBg
rmbg = RemoveBg("q7QUzDPdZWBF1qXDXGd5qYWw", "in.log") # 引号内是你擷取的API
rmbg.remove_background_from_img_file(r"E://圖檔處理//4.jpg") #圖檔的路徑名
im = Image.open('E://圖檔處理//4.jpg_no_bg.png')
#draw = ImageDraw.Draw(im)
#fnt = ImageFont.truetype(r'C:WindowsFontsSTXINGKA.TTF',50)
#draw.text((40, 140), u'運動改變人生', fill='black', font=fnt)
x,y = im.size #圖檔大小
try:
p = Image.new('RGBA', im.size, (255,0,0))#底色換為紅色
p.paste(im, (0, 0, x, y), im)
p.save('E://圖檔處理//4.png')#換色完成後儲存的名字
print('摳圖成功!')
except:
pass
中間注釋部分是因為我做了一個跑步女的試驗圖檔,效果有點醜,因為色差原因,利用alpha通道摳圖效果不好。但是這些代碼用于自拍生成是可以的。
另一種方法
下面還有另一種方法,就是調用paddlehub庫,需要另行下載下傳檔案。
先用這一行代碼下載下傳庫
python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
再用這一行下載下傳子產品
pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com --target=d:pythonpython37libsite-packages paddlehub
然後運作代碼就能摳圖了。
import os, paddlehub as hub
humanseg = hub.Module(name='deeplabv3p_xception65_humanseg') # 加載模型
path = 'E:圖檔' # 檔案目錄
files = [path + i for i in os.listdir(path)] # 擷取檔案清單
results = humanseg.segmentation(data={'image':files}) # 摳圖1234
但是其缺點就是,摳圖速度較慢,但是重在于免費。
python學習
【Python程式設計自學】推薦幾個非常 nice 的免費學習網站_哔哩哔哩 (゜-゜)つロ 幹杯~-bilibiliwww.bilibili.com