证件照换底——数字图像处理应用实战

 一、简要介绍

  相信各位小伙伴从小到大都拍过不少证件照吧,证件照通常有不同的背景颜色,有红色,蓝色,白色等。那么除了在拍摄时选择不同的颜色背景外,使用python进行照片换底也是一种不错的选择。

  实现证件照换底,原理无非就是把照片的背景和前景进行分割,然后生成一个新的背景,再与原来的前景结合,就得到了新的图片。而图像分割的准确性就决定了图像处理的效果。

  我是使用了python的rembg这个软件包,rembg是一个用于从图像中去除背景的 Python 软件包。它利用深度学习模型来实现背景移除的功能,适用于各种图像处理场景。以下是rembg的一些关键特点:

  1. 简易使用rembg 提供了简单的命令行接口和 Python API,用户可以方便地在代码中调用它来处理图像。

  2. 高效性:它采用了先进的深度学习模型,可以快速且准确地分离图像中的前景和背景。

  3. 支持多种图像格式rembg 支持多种常见的图像格式,包括 PNG、JPEG 等。

  4. 无依赖性:在使用时,rembg 不需要其他复杂的图像处理库或工具,安装和配置都比较

二、代码实现

首先我们需要先安装软件包(同时还需要pillow这个软件包)

pip install rembg

 安装完成之后通过如下代码实现照片换底:

from rembg import remove
from PIL import Image
# 输入和输出路径
in_path = "red.jpg"
out_path = "out2.png"
# 要替换的背景颜色
color_name = "blue"

# 转换颜色名称为 RGB
color_dict = {
    "red": (255, 0, 0),
    "blue": (0, 0, 255),
    "black": (0, 0, 0),
    "white": (255, 255, 255)
}

color = color_dict.get(color_name, (255, 255, 255))  # 默认为白色

# 去掉背景颜色
input_image=Image.open(in_path)
output_image=remove(input_image)
# 加上背景颜色
no_bg_image = output_image.convert("RGBA")

# 创建新图像
new_image = Image.new('RGBA', no_bg_image.size, color=color + (255,))  # 添加透明度

# 贴上去掉背景后的图像
new_image.paste(no_bg_image, (0, 0), no_bg_image)  # 使用 alpha 通道作为掩码

# 保存最终图像
new_image.save(out_path)

print(f"Image saved as '{out_path}'")

如果在pycharm里面直接运行这行代码,它会显示这么一段内容

Downloading data from 'https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2net.onnx' to file 'C:\Users\HONOR\.u2net\u2net.onnx'

  表示正在从GitHub上的开源地址下载数据,下载的较慢。我是选择在浏览器的这个地址直接下载,然后保存到对应的文件夹。

三、效果展示

原图1

换为红底

原图2

换为蓝底

  初次之外,我们还可以用这段代码来抠图,将人像和不同的背景结合起来, 是非常好玩和有趣的。

 好了,这次的内容就分享到这里了,资源我放在下面的链接里了,里面包含了源代码和各种测试用例,可以免费下载哦,觉得有用的话,希望大家点一点下载,支持一下。

【免费】图像色彩置换源代码及测试用例.zip资源-CSDN文库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

两眼一睁就是学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值