python界面显示图片更换背景_用python制作一个简陋的证件照换底色的桌面控制台应用...
获取抠图API密钥
前往RemoveBg官网注册一个账号
注册账户界面已翻译,Api每月可用50次
注册成功后登录,按图示所选点击
点击 Get Api Key 获取Api密钥
安装所需支持库
importos, shutilfrom PIL importImage # 处理图片换底色所需支持库from removebg import RemoveBg # 抠图所需支持库
如果电脑只安装了python3原生软件,则打开cmd命令窗口,分别输入 pip install remoevbg 、pip install pillow(python2安装:pip install PIL) 和 pip install shutil ,等待安装成功即可
如果安装了Anaconda,则只需安装 removebg 库,其它库 Anaconda 已内置,我电脑安装了python3.8和Anaconda,用Anaconda操作,相对较为简单,接下来用Anaconda的Jupyter Notebook进行演示
主要代码编写
配置证件照所需更换底色
Background_Color ={'Red': (255, 0, 0, 255),'Blue': (67, 142, 219, 255),'White': (255, 255, 255, 255)
}
设置图片路径
pic = 'test.jpg'path= '%s' % os.getcwd()
进行抠图
rmbg= RemoveBg("Your-RemoveBg-Api-Key", "error.log") #密钥,错误日志rmbg.remove_background_from_img_file('%s\%s' % (path, pic)) #抠图
更换底色
background = Image.new('RGBA', foreground.size, Background_Color[Red]) #背景图,大小同前景图
background.paste(foreground, mask =foreground)background.show()#显示图片
background.save(os.getcwd() + '\\' + pic + "_no_bg.png") # 保存图片
改进并完善程序代码
该程序是比较简陋的控制台程序,多处使用 print 打印输出只是为什么更清楚的知道程序运行时到哪一步以及等待操作
import os, shutil
from PIL import Image
from removebg import RemoveBg
# 证件照背景色
Background_Color = {
'Red': (255, 0, 0, 255),
'Blue': (67, 142, 219, 255),
'White': (255, 255, 255, 255)
}
pic = input("Tip:请将图片移至当前所在目录下!\n请输入图片文件名(含文件后缀):") # 图片文件名
print("当前所在目录:" + os.getcwd())
if os.path.exists('img'):
print("\n当前目录已存在img文件夹!!!")
else:
print("\n正在新建输出目录img ...")
new_folder = '%s' % os.mkdir(os.getcwd() + '\\img') # 新建文件夹
print("输出目录img创建成功!!!\n")
os.chdir('./img') # 切换至img目录下
if os.path.exists(pic) == False:
print("\n正在复制图片至img文件夹......")
shutil.copy('../' + pic, pic)
print("目标图片已复制到img文件夹!\n")
path = '%s' % os.getcwd() # 当前所在路径
print("当前目标图片路径:\t" + '%s\%s' % (path, pic)) # 输出图片所在路径
# Api每月可用50次,降低同一张图片重复抠图频率
if os.path.exists(pic + '_no_bg.png'):
print("\n当前目录已存在透明背景图片" + pic + '_no_bg.png\n')
else:
print("\n正在生成错误日志(可不用理会)......")
rmbg = RemoveBg("Your-RemoveBg-Api-Key", "error.log") # 密钥,错误日志
print("正在进行抠图......")
rmbg.remove_background_from_img_file('%s\%s' % (path, pic)) # 抠图
print("已生成透明背景图片:" + pic + "_no_bg.png\n")
select_bgColor = input("Tip:更换红色背景按 r,更换蓝色背景按 b,根管白色背景按 w \n请选择需要更换的证件照底色:") # 选择所需更换的底色
while True:
if select_bgColor == 'r':
color = 'Red'
break
elif select_bgColor == 'b':
color = 'Blue'
break
elif select_bgColor == 'w':
color = 'White'
break
else:
select_bgColor = input("\n输入有误!请重新输入:")
foreground = Image.open(pic + '_no_bg.png') # 前景图
background = Image.new('RGBA', foreground.size, Background_Color[color]) # 背景图,大小同前景图
background.paste(foreground, mask = foreground)
print("\n正在展示图片......")
background.show() # 显示图片
print("正在保存图片......\n")
new_pic = pic + '_' + color + '.png' # 输出文件名
background.save(os.getcwd() + '\\' + new_pic) # 保存图片
print("输出路径为:" + os.getcwd())
os.chdir('../') # 切换回原工作目录
print("\n保存成功!输出文件为:" + new_pic + "\n\n按任意键退出\n") # 显示保存图片名
os.system('pause') # 按任意键继续
图片为网图,仅作测试使用,可点击图片查看,抠图出来的是透明背景色,有兴趣的可以试试换成白色底,两者有区别的
可以看出,抠图的效果还是不错的,比自己用PS要快,只需5秒左右
而且自己用PS抠图要把头发丝弄的这么精细还是有那么一点难度的
到这里,一个简陋的照片抠图换底色的小程序就完成了,当然,如果想把程序打包成exe文件,可以继续往下看
将程序打包成exe文件
安装支持库
打开cmd,输入 pip install PyInstaller ,等待安装完成
当然也可以去网上下载模块包 PyInstaller-3.6-py2.py3-none-any.whl ,切换到该离线模块包目录下,进行安装
这里分享一个可以下载python大部分模块的网站https://www.lfd.uci.edu/~gohlke/pythonlibs/ ,进入网页按 ctrl + F 输入关键字可以查找所需模块,点击下载
找到目标 .py 文件
因为Jupyter Notebook编写的python文件后缀是 .ipynb ,所以需要将其转换为 .py 文件
按图示所选下载 .py 文件,当然,如果是用python原生软件编写的,保存文件就是 .py 文件,无需转换
然后切换至该 .py 文件所在目录下,输入pyinstaller -F Your_File_Name.py
然后就是耐心等待,打包成exe文件的过程比较久
这里先来了解一下pyinstaller的一些常用参数
-F, –onefile 打包一个exe文件,如果你的代码都写在一个.py文件的话,可以用这个,如果是多个.py文件就别用
-D, –onedir 打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,我个人比较推荐这样,代码易于维护
-d, –debug 产生debug版本的可执行文件
-w, –windowed, –noconsole 使用Windows子系统执行.当程序启动的时候不会打开命令行(只对Windows有效)
-c, –nowindowed, –console 使用控制台子系统执行(默认)(只对Windows有效)
pyinstaller -c xxxx.py
pyinstaller xxxx.py --console
打包成功后会出现3个文件夹和一个文件
最后打包成功的.exe 文件在 dist 目录下
点击可以运行
需要注意的是:
由于是打包成单个 .exe 文件,所以程序是把代码和支持库的代码打包在一起,所以程序会有点大,鉴于此,能用 from ... import ... ,就不用 import ...
其次是启动也有点慢,启动程序要5秒左右才显示,当然,不同电脑等待时间也不一样,请耐心等待,只有不是报错或者直接关闭,是可以使用的
代码是在Windows 10系统下编写的,打包成 .exe 文件曾在虚拟机上的Windows 7系统上运行出现报错,另一台Windows 10系统可以运行,就是等待时间较长
python界面显示图片更换背景_用python制作一个简陋的证件照换底色的桌面控制台应用...相关推荐
- python输出图片代码_通过Python pyecharts输出保存图片代码实例
安装pyecharts:pip install pyecharts 安装snapshot-selenium:pip install snapshot-selenium 安装ChromeDriver:下 ...
- python设置图片透明度_学习python第40天
今天是在尚学堂学习python第40天今天学习了CSS 中常用样式总结,边框的风格,css中的定位,盒模型,css3中的选择器,css3中常用的属性 CSS 中常用样式总结 字体:(font) 字体的 ...
- python简单图片识别_用Python进行简单的图片识别(1)
起因是这样的,我想买一个定焦镜头,但也不是必需品,可以长期观望购买.最初的想法是,写个程序,每天爬一下各大电商网站的价格,或者直接爬etao把该镜头的价格记录下来,突然有一个惊爆的低价,就发邮件通知. ...
- python下载图片代码_使用Python下载Bing图片(代码)
直接上代码: # -*- coding: cp936 -*- import urllib import os print 'Download data......' url = 'http://cn. ...
- python改图片颜色_通过python改变图片特定区域的颜色详解
首先让我祭出一张数学王子高斯的照片,这位印在德国马克上的神人有多牛呢? 他是近代数学的奠基人之一,与牛顿, 阿基米德并称顶级三大数学家,随便找一个编程语言的数学库,里面一定有和他名字相关的一堆函数. ...
- python代码图片头像_用 Python 把朋友头像变表情包? Easy!
22点24分准时推送,第一时间送达 编辑:技术君 | 来源:Python学习与数据挖掘 上一篇: 正文 在日常生活中,我们经常会存取一些朋友们的丑照,在这个项目中,我们以萌萌哒的熊猫头作为背景,然后试 ...
- python对图片颜色校正_使用Python PIL更改图像色调
Using Python PIL, I'm trying to adjust the hue of a given image. I'm not very comfortable with the j ...
- python 修改图片尺寸_用Python更改图片尺寸大小
1.PIL包推荐Pillow. 2.源码:#encoding=utf-8 #author: walker #date: 2014-05-15 #function: 更改图片尺寸大小 import os ...
- python跟谁学_学 Python 都用来干嘛的?
可以拿来了解女朋友情绪变化,顺道自动回复. 还能一键扣图,让开淘宝店的设计师下岗,在一旁痛哭流涕-- 提示:关注微信公众号 [七月在线实验室],让自己变得更强!在公众号内发"ZH" ...
最新文章
- Oracle note 基礎入門篇1
- java -Math类
- 阿里开源的Arthas竟然还不会用?最佳实践来了!
- Linux系统下的权限试题测试
- 工作笔记-新系统安装deb文件失败
- 软件制胜之道精彩观点聚合
- RFIC4463_F3CD
- How To Replace The Firefox Icon With Your Logo
- unity 小tip
- 有线电视与计算机网都是光缆吗,【有线电视论文】计算机管理有线电视光缆数据意义分析(共4443字)...
- 计算机专业毕业了,还要不要参加培训班
- 计算机论文里的代码查重时被标红怎么办呢?
- java中的正则表达式_java中的正则表达式
- MySQL主从1205报错【转】
- Qt多线程使用 和 信号与槽传参 需要注意的问题
- TDA4 IPC 原理
- 这4款风格各异的电脑软件,免费又实用,后悔没早点知道
- 乘着爱的翅膀—《爱的教育》读后感—吕中琪
- 能提取HTML网页正文的网站,智能提取网页正文新方法
- 通往真理的最短路径 - 【复数】科普/详解
热门文章
- T3600工作站重做磁盘阵列及安装系统说明文档
- 算术编码原理及其python实现
- C题——Halting Problem(补题)
- echarts 好看的柱形图
- 赋能农业生态链,打造“云端青柚”UZ新概念
- word 对文中的图表进行链接、插入题注。
- Linux之网络相关命令——ping、tranceroute、netstat、ftp、lftp、wget、ssh、scp、sftp
- 电信行业大数据应用的四个方向
- Unity 关于镜面反射和投影阴影实现
- python可视化库matplotlib_环境搭建 | Python 数据可视化库 Matplotlib 快速入门之一-阿里云开发者社区...