【python】证件照更换背景颜色

发布时间 2023-05-31 17:41:42作者: 代码诠释的世界

1、 介绍

本文使用u2net, pillow, 及backgroundremover进行照片背景的替换

 

2、安装

pip install pillow
pip install backgroundremover

 

3、u2net介绍

https://github.com/xuebinqin/U-2-Net

CSDN镜像地址(可能不是最新)

https://gitcode.net/mirrors/xuebinqin/U-2-Net?utm_source=csdn_github_accelerator

 

4、实现

#!/usr/bin/env python  
# -*- coding:utf-8 -*-  

import os
from PIL import Image
# 输入
in_path = "./test.jpg"
# 输出
out_path = "./white_photo.png"

no_bg_photo = './no_bg_photo.png'
# 要替换的背景颜色
color = "white"
# 红:red、蓝:blue、黑:black、白:white

# 去掉背景颜色
os.system(f'backgroundremover -i "{in_path}" -o "{no_bg_photo}"')
# 加上背景颜色
no_bg_image = Image.open(no_bg_photo).convert("RGBA")
x, y = no_bg_image.size
new_image = Image.new('RGBA', no_bg_image.size, color=color)
new_image.paste(no_bg_image, (0, 0, x, y), no_bg_image)
new_image.save(out_path)

第一次执行会自动下载模型,可能会很慢

 如果下载不下来,就要想办法了,采用第三方下载工具或者魔法

 

5、百度随便找了个证件照

原图

 没背景的图

 换成白色背景的图

 至此基本完成, 只是边缘处理的没那么理想,还需要调试

 

 

6、其他

很多微信小程序,有免费使用的次数,效果还不错,不喜欢折腾的,可以用现成的

 

 

 

参考链接:

证件照不会更换底色怎么办?教你3种方法一键更换证件照背景色_办公软件_什么值得买

U2Net python人像去除背景