PaddlePaddle证件照换底换大小工具

这个工具是在AI抠图的基础上,再加上换底和换大小功能做成的小软件,拥有简易的GUI界面。接着往下看完,你就能拥有一款自己专属证件照小工具了!

一、简介

  • 先来看看效果吧
  • 图片源自网络
  • 首先是原图

  • 然后是中间的扣图结果

  • 可以看到基本扣的十分干净

  • 然后再看看最终的红色二寸照片

  • 可以看到效果是非常不错的

接下来看看我们的GUI界面,让这样一款小工具更加简便好用

  • 首先是进入界面,非常简洁,选取照片后点击你想要格式的按钮即可

  • 如果你没有选去就点击的话会有报错提示

  • 如果正常选择文件,完成转换的进程之后,会提示成功和保存的位置

  • 进入文件夹就可以看到成果了

二、实现方式

1.扣图模型

扣图模型我们选择的是Paddle的deeplabv3p_xception65_humanseg模型。
这是一个已经训练好的模型,我们可以直接使用,简便易用。

2.接下来来看代码实现

首先导入要用到的库

import paddlehub as hub
from PIL import Image
import numpy as np
import tkinter.filedialog
import tkinter as tk
from tkinter import ttk
import tkinter.messagebox
import sys

先看我们的图片处理函数,这一部分直接利用现成的模型,提取图片,并进行合成

def process(path):global rawpathtpath = [rawpath]input_dict = {"image": tpath}results = module.segmentation(data=input_dict)# 查看results内容# for result in results:#     print(result)# 图像背景和前景融合base_image = Image.open(path).convert('RGB')fore_image = Image.open(f'humanseg_output/test.png').resize(base_image.size)# 图片加权合成scope_map = np.array(fore_image)[:, :, -1] / 255scope_map = scope_map[:, :, np.newaxis]scope_map = np.repeat(scope_map, repeats=3, axis=2)res_image = np.multiply(scope_map, np.array(fore_image)[:, :, :3]) + np.multiply((1 - scope_map),np.array(base_image))# 保存图片res_image = Image.fromarray(np.uint8(res_image))res_image.save(f'humanseg_output/2.png')tkinter.messagebox.showwarning(title='提示', message='已保存到humanseg_output文件夹')sys.exit()

接下来是GUI部分

callbackClose函数是关闭程序时的提示框

selectPath函数是选取文件的函数

def callbackClose():tkinter.messagebox.showwarning(title='警告', message='点击了关闭按钮')sys.exit(0)def selectPath():global rawpath# 选择文件path_接收文件地址path_ = tkinter.filedialog.askopenfilename()# 通过replace函数替换绝对文件地址中的/来使文件可被程序读取# 注意:\\转义后为\,所以\\\\转义后为\\path_ = path_.replace("/", "\\\\")rawpath = path_# path设置path_的值path.set(path_)

下面六个函数对应六种不同的处理方式

  • 白色、蓝色、红色,一寸,两寸

def white_1():  # 当acction被点击时,该函数则生效if rawpath is '':tkinter.messagebox.showwarning(title='错误', message='未选择文件')sys.exit()action1.configure(state='disabled')  # 将按钮设置为灰色状态,不可使用状态process('photo/white_1.png')def blue_1():  # 当acction被点击时,该函数则生效if rawpath is '':tkinter.messagebox.showwarning(title='错误', message='未选择文件')sys.exit()action2.configure(state='disabled')  # 将按钮设置为灰色状态,不可使用状态process('photo/blue_1.png')def red_1():  # 当acction被点击时,该函数则生效if rawpath is '':tkinter.messagebox.showwarning(title='错误', message='未选择文件')sys.exit()action3.configure(state='disabled')  # 将按钮设置为灰色状态,不可使用状态process('photo/red_1.png')def white_2():  # 当acction被点击时,该函数则生效if rawpath is '':tkinter.messagebox.showwarning(title='错误', message='未选择文件')sys.exit()action4.configure(state='disabled')  # 将按钮设置为灰色状态,不可使用状态process('photo/white_2.png')def blue_2():  # 当acction被点击时,该函数则生效if rawpath is '':tkinter.messagebox.showwarning(title='错误', message='未选择文件')sys.exit()action5.configure(state='disabled')  # 将按钮设置为灰色状态,不可使用状态process('photo/blue_2.png')def red_2():  # 当acction被点击时,该函数则生效if rawpath is '':tkinter.messagebox.showwarning(title='错误', message='未选择文件')sys.exit()action6.configure(state='disabled')  # 将按钮设置为灰色状态,不可使用状态process('photo/red_2.png')

然后是主函数,加载模型,和GUI的主界面的建立。

if __name__ == '__main__':rawpath = ""module = hub.Module(name="deeplabv3p_xception65_humanseg")  # 调用模型, version='1.0.0'main_box = tk.Tk()#变量pathpath = tk.StringVar()main_box.title("证件照换底换大小")  # 添加标题tk.Label(main_box, text="目标路径:").grid(row=0, column=0)ttk.Label(main_box, text="请保证路径及名称不含中文").grid(column=1, row=1)ttk.Label(main_box, text="原文件最好也是证件照").grid(column=1, row=2)tk.Entry(main_box, textvariable=path).grid(row=0, column=1)tk.Button(main_box, text="路径选择", command=selectPath).grid(row=0, column=2)main_box.protocol("WM_DELETE_WINDOW", callbackClose)action1 = ttk.Button(main_box, text="白色一寸", command=white_1)  # 创建一个按钮, text:显示按钮上面显示的文字, command:当这个按钮被点击之后会调用command函数action1.grid(column=0, row=3)  # 设置其在界面中出现的位置 column代表列 row 代表行action2 = ttk.Button(main_box, text="蓝色一寸", command=blue_1)  # 创建一个按钮, text:显示按钮上面显示的文字, command:当这个按钮被点击之后会调用command函数action2.grid(column=0, row=4)  # 设置其在界面中出现的位置 column代表列 row 代表行action3 = ttk.Button(main_box, text="红色一寸", command=red_1)  # 创建一个按钮, text:显示按钮上面显示的文字, command:当这个按钮被点击之后会调用command函数action3.grid(column=0, row=5)  # 设置其在界面中出现的位置 column代表列 row 代表行action4 = ttk.Button(main_box, text="白色二寸", command=white_2)  # 创建一个按钮, text:显示按钮上面显示的文字, command:当这个按钮被点击之后会调用command函数action4.grid(column=2, row=3)  # 设置其在界面中出现的位置 column代表列 row 代表行action5 = ttk.Button(main_box, text="蓝色二寸", command=blue_2)  # 创建一个按钮, text:显示按钮上面显示的文字, command:当这个按钮被点击之后会调用command函数action5.grid(column=2, row=4)  # 设置其在界面中出现的位置 column代表列 row 代表行action6 = ttk.Button(main_box, text="红色二寸", command=red_2)  # 创建一个按钮, text:显示按钮上面显示的文字, command:当这个按钮被点击之后会调用command函数action6.grid(column=2, row=5)  # 设置其在界面中出现的位置 column代表列 row 代表行main_box.mainloop()

最后,当所有代码调试完成之后,您就可以对程序进行打包了,生成一个EXE文件,这样,您就真正拥有了一款属于您自己的证件照小工具了!!!

运行代码请点击:https://aistudio.baidu.com/aistudio/projectdetail/532084?shared=1

Github地址为:https://github.com/chenqianhe/Certificate_photo_for_background_color

欢迎点击fork,star,like三连

PaddlePaddle证件照换底换大小工具相关推荐

  1. OpenCV-python 证件照换底-利用函数inRange及滑动条creatTrackbar分割

    OpenCV-python 证件照换底 利用函数inRange及滑动条creatTrackbar分割 证件照换底HSV参考图片总是设定不准inRange的值.做一个利用滑条滑动直接看效果的吧 inRa ...

  2. python证件照_python实现证件照换底功能

    本来是在找交通识别的程序,然后凑巧看见了证件照换底,于是学习了一下~一开始在网上找了一个很普遍写的程序,但是效果并不好,想要放弃了,然后看见了这个,参考:python opencv实现证件照换底功能 ...

  3. php-opencv身份证识别,python opencv实现证件照换底功能

    本文实例为大家分享了python opencv实现证件照换底功能的具体代码,供大家参考,具体内容如下 思路:先转到HSV空间,利用颜色提取背景制作掩模版mask,然后通过按位操作提取人像和制作新背景, ...

  4. python 实现证件照换底

    本来是在找交通识别的程序,然后凑巧看见了证件照换底,于是学习了一下~一开始在网上找了一个很普遍写的程序,但是效果并不好,想要放弃了,然后看见了这个,参考:https://blog.csdn.net/w ...

  5. matlab实现证件照换底+美肤的功能

    f=imread('boy2.png');subplot(1,3,1);imshow(f);title('原图'); a=f(:,:,3); %确定图像的大小 [m,n]=size(a);  for ...

  6. 利用Photoshop对证件照换底且抠出头发丝

    如何利用Photoshop对证件照换底,且抠出头发丝 关键在于利用好通道选取 详情参见: https://www.2014g.cn/hangye/1734.html

  7. 【微信小程序】照片换底(免费拍摄多种类型证件照、剪裁、换底、压缩)

    [微信小程序]照片换底(免费拍摄多种类型证件照.剪裁.换底.压缩) 前言 微信搜索小程序:快速照片换底.利用AI抠图制作各种类型的证件照,关键是免费. 应用截图 注意事项 纯色背景,比如蓝布或者白墙 ...

  8. PaddleHub创意项目-制作证件照(抠图换底美颜)

    PaddleHub创意项目-制作证件照(抠图换底美颜) 经过三个星期的百度架构师手把手带你零基础实践深度学习,对paddle有了一定了解,现在利用PaddleHub实践一个对图像进行抠图换底加美颜的小 ...

  9. python opencv pdf脚本之家_python opencv实现证件照换底功能

    本文实例为大家分享了python opencv实现证件照换底功能的具体代码,供大家参考,具体内容如下 思路:先转到HSV空间,利用颜色提取背景制作掩模版mask,然后通过按位操作提取人像和制作新背景, ...

  10. PS把证件照的蓝底换成其他底色

    1.目的:证件照底色的转换 2.需要软件:Photoshop 下载链接:链接 https://pan.baidu.com/s/1wxRjFhuJJgMMgnMQj_VSuA 提取码:wedd 3.操作 ...

最新文章

  1. matlab绘制圆,且求解两个圆的交点坐标
  2. c++ map用法_Pandas数据处理三板斧——map、apply、applymap详解
  3. Zookeeper--Watcher机制源码剖析二
  4. linux shell 脚本 父子进程 等待子进程,SHELL父子进程分析
  5. 可信计算3.0工程初步pdf_查校 | 英国大学工业工程与运筹学专业40个授课硕士+研究Mphil/Phd 项目汇总...
  6. 解密亚马逊Ironman计划:背靠AWS云服务发力AI,对抗谷歌微软
  7. HDU2525 Clone Wars【模拟】
  8. UnityShader30:预编译指令multi_complie和shader_feature
  9. shell读取用户输入
  10. php 开源邮件系统,企业级开源邮件系统搭建的全过程
  11. Json格式以及常见的Json解析器
  12. 西南科技大学OJ题 循环队列0965
  13. win10 32位和64位的区别,win10 32位和64位有什么区别
  14. python基础教程视频优酷_Python快速入门视频
  15. python将.tif格式图批量转化为.jpg格式图
  16. 家居风水大全[ZT:http://sssyyyccc.blog.hexun.com/2641355_d.html]
  17. 大数据学习之 ElasticSearch 练习
  18. 综合应用 -- 购物车
  19. JoyStick(游戏手柄)与C#
  20. Windows 共享文件访问日志

热门文章

  1. 【php】PHP制作QQ微信支付宝三合一收款码
  2. 分析113个前缀在各大考纲词汇中的作用(二)总结精选篇
  3. MATLAB-1: 线性拟合(r2、系数和系数误差)
  4. ajax报502错误,ajax服务器返回502
  5. 设计思维Design Thinking
  6. 陕西省咸阳市谷歌高清卫星地图下载
  7. 网页添加 Live2D 看板娘
  8. 浅谈App的启动优化
  9. 树莓派python扫描蓝牙
  10. 使用云服务器的几个安全防护技巧