利用Python代码实现一键抠背景功能


Posted in Python onDecember 29, 2019

前言

又是一个逛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)

效果如下:

利用Python代码实现一键抠背景功能

利用Python代码实现一键抠背景功能

2.参照removebg库中的使用说明调用API,用相关代码实现抠背景

从gitub上下载removebg库源码时会有一个使用说明,即README.md,链接如下
https://github.com/brilam/remove-bg

利用Python代码实现一键抠背景功能

上代码,这里就只展示处理单张图片的代码,批量处理图片以及根据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') # 图片地址

效果如下

利用Python代码实现一键抠背景功能

from removebg import RemoveBg
# 抠单张图片
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') # 图片地址

利用Python代码实现一键抠背景功能

但奇怪的是加上填充纯色背景的属性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, 0))
 p.paste(im, (0, 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 .')

效果如下

利用Python代码实现一键抠背景功能

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python内置的字符串处理函数详细整理(覆盖日常所用)
Aug 19 Python
python实现简易版计算器
Jun 22 Python
用Eclipse写python程序
Feb 10 Python
详解python单元测试框架unittest
Jul 02 Python
PyQt5实现类似别踩白块游戏
Jan 24 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
Apr 27 Python
简单分析python的类变量、实例变量
Aug 23 Python
Python3.7 pyodbc完美配置访问access数据库
Oct 03 Python
python-web根据元素属性进行定位的方法
Dec 13 Python
django中的数据库迁移的实现
Mar 16 Python
详解Python为什么不用设计模式
Jun 24 Python
Python使用OpenCV实现虚拟缩放效果
Feb 28 Python
如何利用pygame实现简单的五子棋游戏
Dec 29 #Python
Python使用正则实现计算字符串算式
Dec 29 #Python
Django框架教程之中间件MiddleWare浅析
Dec 29 #Python
三个python爬虫项目实例代码
Dec 28 #Python
python scrapy重复执行实现代码详解
Dec 28 #Python
Python统计时间内的并发数代码实例
Dec 28 #Python
如何基于python实现脚本加密
Dec 28 #Python
You might like
PHP利用REFERER根居访问来地址进行页面跳转
2013/09/28 PHP
php把session写入数据库示例
2014/02/26 PHP
php+ajax实现无刷新分页的方法
2014/11/04 PHP
php查询ip所在地的方法
2014/12/05 PHP
php递归法读取目录及文件的方法
2015/01/30 PHP
如何打开php的gd2库
2017/02/09 PHP
在php的yii2框架中整合hbase库的方法
2018/09/20 PHP
让任务管理器中的CPU跳舞的js代码
2008/11/01 Javascript
JS实现图片横向滚动效果示例代码
2013/09/04 Javascript
JS中的异常处理方法分享
2013/12/22 Javascript
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
详解nodejs的express如何自动生成项目框架
2017/07/12 NodeJs
JavaScript事件冒泡与事件捕获实例分析
2018/08/01 Javascript
vue中如何去掉空格的方法实现
2018/11/09 Javascript
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
2016/12/14 Python
快速解决PyCharm无法引用matplotlib的问题
2018/05/24 Python
Django 框架模型操作入门教程
2019/11/05 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
2020/07/28 Python
Python3实现英文字母转换哥特式字体实例代码
2020/09/01 Python
HTML5 canvas基本绘图之图形变换
2016/06/27 HTML / CSS
Stuart Weitzman美国官网:美国奢华鞋履品牌
2016/08/18 全球购物
香港个人化生活购物网站:Ballyhoo Limited
2016/09/10 全球购物
巴西备受欢迎的服装和生活方式品牌:FARM Rio
2020/02/04 全球购物
最新的互联网创业计划书
2014/01/10 职场文书
电子专业毕业生自我鉴定
2014/01/22 职场文书
工作决心书范文
2014/03/11 职场文书
模具设计与制造专业求职信
2014/07/19 职场文书
安全生产年活动总结
2014/08/29 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
2014年第四季度入党积极分子思想汇报(十八届四中全会)
2014/11/03 职场文书
2015社区精神文明建设工作总结
2015/04/21 职场文书
运动会开幕式通讯稿
2015/07/18 职场文书
HTML中的表单元素介绍
2022/02/28 HTML / CSS