python更改编程背景_利用Python代码实现一键抠背景功能

前言

又是一个逛csdn发现的一个有趣的小项目,可以一键抠背景,需要用到removebg模块及其API,API可从其官网免费获取,网址如下https://www.remove.bg/zh

ps:加上/zh后,网页内容会显示中文

首先是安装removebg模块

然后就敲代码了,官方使用文档是个好东西,应该好好利用

有趣的是,意外发现了两种使用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",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))

p.paste(im,(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. 导入所需的库:首先,需要导入Python中的图像处理库,例如PIL(Python Imaging Library)或者OpenCV。 2. 加载图像:使用库中的函数加载待处理的图像文件。 3. 分割图像:将图像分割为前景和背景两部分。可以使用图像分割算法,例如GrabCut算法或者基于颜色阈值的分割方法。 4. 替换背景:将背景部分替换为指定的颜色或者透明。可以使用图像处理函数,例如修改像素值或者使用蒙版操作。 5. 保存结果:将处理后的图像保存到指定的文件路径。 下面是一个简单的示例代码,演示了如何使用PIL库实现一键换照片底色: ```python from PIL import Image def change_background_color(image_path, new_color): # 加载图像 image = Image.open(image_path) # 分割图像 # 这里使用简单的阈值分割方法,将背景设为纯白色 threshold = 200 image = image.convert("RGBA") data = image.getdata() new_data = [] for item in data: if item[0] > threshold and item[1] > threshold and item[2] > threshold: new_data.append((255, 255, 255, 0)) else: new_data.append(item) image.putdata(new_data) # 替换背景 # 这里将背景替换为指定的颜色 width, height = image.size for x in range(width): for y in range(height): r, g, b, a = image.getpixel((x, y)) if a != 0: image.putpixel((x, y), new_color) # 保存结果 image.save("result.png") # 示例调用 image_path = "input.png" new_color = (0, 255, 0, 255) # 替换为绿色背景 change_background_color(image_path, new_color) ``` 请注意,以上示例代码仅演示了一种简单的方法,实际应用中可能需要根据具体需求进行更复杂的图像处理和背景替换操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值