利用Python代码实现一键抠背景功能
前言
又是一个逛csdn发现的一个有趣的小项目,可以一键抠背景,需要用到removebg模块及其API,API可从其官网免费获取,网址如下https://www.remove.bg/zh
ps:加上/zh后,网页内容会显示中文
- 首先是安装removebg模块
- 然后就敲代码了,官方使用文档是个好东西,应该好好利用
有趣的是,意外发现了两种使用API的方法
1.用到爬虫的知识,利用requests模块,从网页上调用,直接实现抠背景
#Requires"requests"tobeinstalled(seepython-requests.org) importrequests 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'}, ) ifresponse.status_code==requests.codes.ok: withopen('no-bg.png','wb')asout: 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中有展示
fromremovebgimportRemoveBg #抠单张图片 rmbg=RemoveBg("xxxxx","error.log")#引号内是你获取的API rmbg.remove_background_from_img_file(r"C:\Users\Lenovo\PycharmProjects\爬虫\长颈鹿1.jpg",size='regular')#图片地址
效果如下
fromremovebgimportRemoveBg #抠单张图片 rmbg=RemoveBg("P3UCVZzKiUxW7BbkmcRYhgTB","error.log")#引号内是你获取的API rmbg.remove_background_from_img_file(r"C:\Users\Lenovo\PycharmProjects\爬虫\长颈鹿1.jpg",size='regular',bg_color='e.g.red')#图片地址
但奇怪的是加上填充纯色背景的属性bg_color='e.g.red'后会有这样的报错,尚未解决
后来使用了PIL库来实现背景的填充
fromPILimportImage #加载已去背景的图像 im=Image.open('./pic/no-bg.png') x,y=im.size try: #填充红色背景 p=Image.new('RGBA',im.size,(255,0,0)) p.paste(im,(0,0,x,y),im)#paste的背景尺寸需与原图尺寸相同 #保存填充后的图片 p.save('./pic/no-bg_red_bg.png') p.show()#显示处理后的图片 except: withopen('./error1.log','a')asf: f.write('backgroundchangefail.')
效果如下
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。