沙雕模式开启
又到了一次交个人信息表的时候了,在word照片框贴照片时发现自己之前放在e盘的电子照片不见了,我丢。之前去照相馆就只留了一张底片,疫情当前(打游戏懒得出门),作为时代好青年,出门拍照是不可能的,为一张电子照掏钱这辈子都不可能的。我就上网找有没有好用的api可以拉拉线,做几张证件照。没想到还真找到了。
私信小编01即可获取大量Python学习资料
没错,就是这个网站,看起来还挺不错,提供了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
但是其缺点就是,抠图速度较慢,但是重在于免费。