本文目录:前期准备-编写代码-测试结果-文末福利

本文作者:小赖同学

不知不觉就到了2月中旬了,因为肺炎疫情大家都一再延迟了上班上学,天天睡到大中午,起来吃个小午餐,玩手机睡午觉又到大晚上,哪都不敢去,被迫放假是真的很难受。

而我,虽然已经上班了,但下班了哪都不敢去,超级无聊。这几天,在整理以前的摄影照片时无意中发现了几张证件照,又看到了电脑桌面的PS,突然间就来了点灵感,好像好像又不那么无聊了。

我可以用Python来抠图吗?可以给证件照换个底色吗?我可以负责任地告诉你,经过几天实践得知,可以!只有几行代码而且还很快!(提前偷偷告诉你,文末还有福利哦)

啥,想看看效果图?好,上动图。

啥,想看看是如何实现的?好,接下来请听我慢慢叙述。

前期准备

1、工具挑选

Python要实现抠图功能,网上有很多方法。我这边经过对比,挑选了RemoveBg这款工具。RemoveBg是国外的一个专业为人物去除背景的神器,它利用的是智能AI抠图,100%全自动化,全程无需人为操作抠图,可以说是非常简单快捷的一款工具了,并且号称只要5秒就能完成去除背景,这个工具目前完全免费,提供PNG图片下载。

官网支持网上在线抠图,只需要简单注册获取其API KEY就可以使用,每个API KEY每月免费50张,但由于是国外服务器,使用过程会感觉页面加载有点缓慢,导出的图片大小也会有所压缩和限制。

最重要的是Python支持RemoveBg,只需要下载安装这个模块就可以使用了,完美符合此文的主题。

2、获取API KEY

搜索RemoveBg官网,进入官网注册一个账号就可以获得API KEY。这个API KEY是相当于一个“身份ID”,实现证件照换底色需要导入第三方模块removebg,有了这个ID就可以使用到RemoveBg的“技术支持”。

RemoveBg官网:https://www.remove.bg/zh,API KEY获取网址:https://www.remove.bg/zh/api,获取API KEY的具体操作也很简单:

编写代码

1、安装removebg模块和Pillow模块

Windows + R打开运行窗口,然后输入cmd打开命令提示符窗口,在命令行终端输入pip install removebg进行removebg模块的安装,输入pip install Pillow进行Pillow模块的安装。

稍等一会,提示安装成功就可以使用这两个模块了。(备注:我这是因为配置好了python环境的,没安装python的可以自己搜索下如何安装。)

2、代码介绍

安装好了需要的工具模块后,就可以开始编写代码了。证件照换底色使用的主要代码也就十行左右。

rmbg = RemoveBg(api_key, "error.log")
rmbg.remove_background_from_img_file(old_image_path)

首先是获得RemoveBg,传入上述所说的API KEY,再将需要更换底色的证件照路径传入其remove_background_from_img_file()方法,此方法会在证件照路径下新生成一个抠除底色的图像。

no_bg_image = Image.open(no_bg_image_path)
x, y = no_bg_image.size
try: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(new_image_path)
except:print("image matting except")

接着通过PIL下的Image打开抠除底色的图像,获取到其分辨率大小等数据后再通过Image新生成一个特定底色的证件照,color即是需要更换成的底色,color可以是"red"等英文字符串,也可以是(255, 0, 0)等RGB值。最后把更换底色后的证件照保存到你选择的路径下,底色更换就完成了。

3、完整代码

通过上面第二点的介绍,就已基本清楚了证件照更换底色的代码实现原理,最后就附上完整的简单整合的实现代码。

import osfrom PIL import Image
from removebg import RemoveBgdef image_matting(old_image_path, new_image_path, api_key, color):# API KEY获取官方网站:https://www.remove.bg/zh/apirmbg = RemoveBg(api_key, "error.log")rmbg.remove_background_from_img_file(old_image_path)parent_path = os.path.dirname(old_image_path)old_image_name = os.path.split(old_image_path)[-1]no_bg_image_name = old_image_name + "_no_bg.png"if no_bg_image_name in os.listdir(parent_path):no_bg_image_path = parent_path + "/" + no_bg_image_nameno_bg_image = Image.open(no_bg_image_path)x, y = no_bg_image.sizetry: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(new_image_path)except:print("image matting except")else:print("image matting fail")

测试结果

1、挑选证件照

因为本地我的证件照是原图,分辨率太大,为避免卡崩,我去百度上搜索下载了两张合适的靓女靓仔的证件照来测试效果如何。测试原图如下所示。

靓女靓仔原图-图源网络

2、测试结果

用代码换底色新生成的证件照整体感觉还可以,看上去并没有多大的瑕疵,头发边边的处理也挺舒服,对于不会PS的小白来说简直就是福利,对于会抠图又懒得花时间去抠的人来说简直就是偷懒神器。

靓女-更换后

靓仔-更换后

文末福利

1、福利

你以为到这就结束了?不,还有福利!!!毕竟还是有很多人是不懂代码的,又不会抠图,是个PS小白,于是,我又熬了下夜,把这个代码打包成了exe独立程序,无需python环境也可以在自己电脑上运行,现在只要在公众号“学渣同学”后台回复“证件照神器”即可获得这个工具!

2、工具效果图

图标

界面

推荐阅读

【Python】我用python爬取一月份微博热搜数据来分析人们对新型肺炎的关注程度变化

可以重启2020吗?我用Python分析总结了1月份发生了什么

     

如有问题,可联系我

【Python】教你如何快速给证件照更换底色相关推荐

  1. 计算机一级照片可以用红底吗,告别修图软件,教你用Excel给证件照更换多种底色!方便又省钱...

    原标题:告别修图软件,教你用Excel给证件照更换多种底色!方便又省钱 在很多场合中,我们都需要用到证件照,而不同的场合需要的证件照又有不一样的要求,一会要红底一会要蓝底. 很多人都选择去照相馆重新照 ...

  2. Photoshop2018 证件照更换底色

    Photoshop2018证件照更换底色 材料:电子版证件照一张 工具:Photoshop 2018 第一步:在ps中打开证件照 第二步:使用快速选择工具,选取背景区域 第三步:填充背景色. 鼠标右键 ...

  3. php 网站域名怎么更换,教你如何快速给网站更换域名,简单粗暴!

    很多SEOER都遇到过这样的问题,网站发展了一段时间,关键词排名有了进展,流量增加了许多,网站开始有了收入,这时候便有了给网站更换域名的想法,但是又担心给网站更换域名会影响权重和排名,进入左右为难的境 ...

  4. 你距离女朋友其实只差一个幽默的句子,python教你如何快速将有趣的句子收归数据库

    你可曾看见过这样的句子: "我爱的人也爱着我,对我来说这简直是个奇迹." 又或者是: "生活中若没有朋友,就像生活中没有阳光一样." 再或者这样: " ...

  5. 证件照换底色的2个简单方法分享

    说到证件照的底色更改,我想对大部分朋友来说是蛮头疼的事情,由于我们不论是在生活还是学习中,有时候总会要上传一些证件照,而当你手上有证件照准备上传时,发现底色不对,是不是很抓狂,现在,我就来给朋友们解决 ...

  6. 证件照换底色,快试试这3种方法,方便还快捷

    由于我们不论是在生活还是学习中,有时候总会要上传一些证件照,而当你手上有证件照准备上传时,发现底色不对,是不是很抓狂,电子证件照片换底色怎么弄?很多小伙伴还在因为证件照底色不对而重新拍?NO!我不许你 ...

  7. java面试换背景颜色_证件照换底色 证件照换背景 证件照背景颜色

    很多人都不知道怎么让证件照换底色,如果单位要求要红底证件照,而你手里只有蓝底的,怎么办?下面小编就来教你,怎么给证件照换底色换背景颜色. 小美智能证照小程序可以在线拍摄制作证件照,还支持证件照换底色, ...

  8. 怎么给证件照换底色?这四个免费方法一看就会

    分享5种可以给证件照换底色的工具,操作简单,一键更换证件照底色,而且有电脑软件和手机APP,让你随时随地都能修改证件照底色! 1.画图3D(电脑自带软件) 一个Windows系统中自带的绘画软件,用它 ...

  9. 基于python的证件照_20行代码教你用python给证件照换底色的方法示例

    1.图片来源 该图片来源于百度图片,如果侵权,请联系我删除!图片仅用于知识交流. 2.读取图片并显示 imread():读取图片: imshow():展示图片: waitkey():设置窗口等待,如果 ...

最新文章

  1. POJ - 2104 K-th Number(主席树)
  2. 微软CRM 2011 Beta 新功能之二:不同组织不同基本语言
  3. history 改成 模式_前端路由三种模式
  4. levelshifter工作原理_从滑块问题看Level Shifter中Latch的状态转换
  5. 干得漂亮!签约“这辈子不可能打工”男子的经纪公司将被拉黑
  6. leetcode971. Flip Binary Tree To Match Preorder Traversal
  7. AndroidStudio 内存泄漏分析 Memory Monitor
  8. python优化算法_Python最优化算法实战
  9. lavas自动创建目录及说明
  10. UCI数据库使用说明
  11. 因为计算机中丢失lua.dll,lua51.dll丢失修复
  12. 1's Complement和2's Complement的区别
  13. Cloudera(CDH) 简介和在线安装
  14. #详解# 激活函数中的 饱和、软饱和、硬饱和
  15. 用一年的数据预测下一年数据_一年的招聘数据中的经验教训
  16. 图神经网络 | (6) 图分类(SAGPool)实战
  17. 广度优先搜索BFS-P3456 [POI2007]GRZ-Ridges and Valleys
  18. Excel宏正则匹配
  19. 如何生成tfrecord
  20. draw.io绘图工具

热门文章

  1. Linux查看进程id
  2. python成绩表格
  3. 操作系统知识整理——Linux下进程的内存布局以及brk()、sbrk()函数探究
  4. 中继器:选择对比商品
  5. 东南亚LAZADA现在好做吗?
  6. 关于Unity,愤怒的小鸟,如何画抛物线
  7. 小米5s+刷+android+8.0,小米回应小米5s系列适配Android 8.0:正在全速处理
  8. vr手机在哪能买_小米vr支持什么手机 这四款手机中你有哪款?
  9. 【水晶报表内功心法】--PUSH模式样板招式
  10. 方舟原始恐惧mod生物代码_盘点《方舟:生存进化》手游3大凶猛恐龙,一不小心就被撕成碎片...