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

 更新时间:2019年12月29日 15:59:50   作者:yc10d  
这篇文章主要给大家介绍了关于如何利用Python代码实现一键抠背景的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

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

效果如下:

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

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


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

效果如下


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') # 图片地址

但奇怪的是加上填充纯色背景的属性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 生成 -1~1 之间的随机数矩阵方法

    Python 生成 -1~1 之间的随机数矩阵方法

    今天小编就为大家分享一篇Python 生成 -1~1 之间的随机数矩阵方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Python 爬取网页图片详解流程

    Python 爬取网页图片详解流程

    没想到python是如此强大,令人着迷,以前看见图片总是一张一张复制粘贴,现在好了,学会python就可以用程序将一张张图片,保存下来。今天网上冲浪看到很多美图,可是图片有点多,不想一张一张地复制粘贴,怎么办呢?办法总是有的,即便没有我们也可以创造一个办法
    2021-11-11
  • 浅谈Python之Django

    浅谈Python之Django

    这篇文章主要介绍了Python3中的Django,小编觉得这篇文章写的还不错,需要的朋友们下面随着小编来一起学习学习吧,希望能够给你带来帮助
    2021-10-10
  • pandas实现将dataframe满足某一条件的值选出

    pandas实现将dataframe满足某一条件的值选出

    今天小编就为大家分享一篇pandas实现将dataframe满足某一条件的值选出,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • python 通过SSHTunnelForwarder隧道连接redis的方法

    python 通过SSHTunnelForwarder隧道连接redis的方法

    今天小编就为大家分享一篇python 通过SSHTunnelForwarder隧道连接redis的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • 深入详解Python中生成器的原理与应用

    深入详解Python中生成器的原理与应用

    生成器 是Python中一种非常实用的特性,它能帮助我们编写高效的代码,本文将详细为大家介绍生成器的原理、用法以及实际应用场景,有需要的小伙伴可以了解下
    2023-12-12
  • Python计算三维矢量幅度的方法

    Python计算三维矢量幅度的方法

    这篇文章主要介绍了Python计算三维矢量幅度的方法,涉及Python矢量运算的相关技巧,需要的朋友可以参考下
    2015-06-06
  • python curl2pyreqs 生成接口脚本实战教程

    python curl2pyreqs 生成接口脚本实战教程

    这篇文章主要介绍了python curl2pyreqs 生成接口脚本实战教程,首先下载 curl2pyreqs 库,打开调试模式,在Network这里获取接口的cURL,需要的朋友可以参考下
    2023-10-10
  • 解决win64 Python下安装PIL出错问题(图解)

    解决win64 Python下安装PIL出错问题(图解)

    这篇文章主要介绍了解决win64 Python下安装PIL出错问题,文中的解决方法也很简单,需要的朋友参考下吧
    2018-09-09
  • Python 查看文件的编码格式方法

    Python 查看文件的编码格式方法

    下面小编就为大家分享一篇Python 查看文件的编码格式方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12

最新评论