项目概况简介:通过调用removebg库去除照片中的背景,也可以通过调用PIL库添加背景,这样可以用来实现证件照的背景颜色更换,比如生成白色、蓝色和红色
代码流程:输入-要得到的图片背景处理效果 A-切换为红色背景,B-蓝色,C-白色,D-仅去除背景色,输出-得到对应的图片
removebg库简介:基于 Python、Ruby 和深度学习技术开发,通过强大的 AI 人工智能算法实现自动识别出前景主体与背景图,处理时间在5s以内。用户也可直接到官网上传照片处理,每月最多免费处理 50 张照片如果想生成高清甚至 4K 的图片或者处理更多需要付费,官网如下:https://www.remove.bg。调用接口需要自己注册账号生成一个apikey(在调用接口时必备)
通过创建类来去除图片背景和添加背景
class Imgprocess():
def __init__(self,apikey):
self.apikey = apikey
#removebg: 调用RemoveBg接口并生成去除背景的图片,图片名在原图片名称后加_no_bg.png,
#如本实验原图片名称certificate.jpg 生成的去背景图片名称certificate.jpg_no_bg.png
def removebg(self,img):
rmbg = RemoveBg(self.apikey,"error.log")
rmbg.remove_background_from_img_file(img)
#changebg: 调用PIL添加背景颜色
def changebg(self,img,color):
color_dict = {"A":(255,0,0),"B":(67,142,219),"C":(255,255,255)}
im = Image.open(img)
x,y =im.size
try:
p = Image.new('RGBA', im.size,color=color_dict.get(color))
p.paste(im,(0, 0, x, y), im)
p.save('{}.png'.format('new'+color))
except:
print('changebg err')
pass
主函数(读取用户需要处理照片的效果,如去除背景还是生成其他背景颜色)
def main():
option = input("pls input your taget img type, A:red B:bule C:white D:justremovebg:\n")
print(option)
newimg = Imgprocess("1HvhnyaCtUWbytL15RqCPp4o")
newimg.removebg("certificate.jpg")
if option in list('ABC'):
print('in')
newimg.changebg('certificate.jpg_no_bg.png',option)
print('out')
else:
print('done')
pass
改进和扩展通过os库自动读取需要处理的图片,不限制文件名称必须是「certificate.jpg」
和其他的背景图片组合生成新的有趣图片
批量处理图片
参考文档只需要 3 行代码 5 秒钟就可以完成抠图的 Python 库www.makcyun.toppython PIL 图像处理库简介(一)PIL背景颜色设置Background Removal API – remove.bgwww.remove.bg
github 源码leoloo0510/Enterprise