python实现证件照换底功能


Posted in Python onAugust 20, 2019

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

本人基于此做了一些改进,便于自己运行和调试,还加了中值滤波,本人觉得效果还不错~

代码:

import cv2
import numpy as np
 
def cvtBackground(path,color):
 """
 功能:给证件照更换背景色(常用背景色红、白、蓝)
 输入参数:path:照片路径
 color:背景色 <格式[B,G,R]>
 """
 im=cv2.imread(path)
 im_hsv=cv2.cvtColor(im,cv2.COLOR_BGR2HSV) #BGR和HSV的转换使用 cv2.COLOR_BGR2HSV
 #aim=np.uint8([[im[0,0,:]]])
 #hsv_aim=cv2.cvtColor(aim,cv2.COLOR_BGR2HSV)
 mask=cv2.inRange(im_hsv,np.array([im_hsv[0,0,0]-5,100,100]),np.array([im_hsv[0,0,0]+5,255,255])) #利用cv2.inRange函数设阈值,去除背景部分
 mask1=mask      #在lower_red~upper_red之间的值变成255
 img_median = cv2.medianBlur(mask, 5) #自己加,中值滤波,去除一些边缘噪点
 mask = img_median
 mask_inv=cv2.bitwise_not(mask) 
 img1=cv2.bitwise_and(im,im,mask=mask_inv) #将人物抠出
 bg=im.copy()
 rows,cols,channels=im.shape
 bg[:rows,:cols,:]=color
 img2=cv2.bitwise_and(bg,bg,mask=mask) #将背景底板抠出
 img=cv2.add(img1,img2)
 image={'im':im,'im_hsv':im_hsv,'mask':mask1,'img':img,'img_median':img_median}
 cv2.startWindowThread() #加了这个后在图片窗口按Esc就可以关闭图片窗口
 for key in image:
 cv2.namedWindow(key)
 cv2.imshow(key,image[key])
 cv2.waitKey(0)
 cv2.destroyAllWindows()
 return img
#test
if __name__=='__main__':
 img=cvtBackground('3.jpg',[0,0,180])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 字符串中的字符倒转
Sep 06 Python
python和C语言混合编程实例
Jun 04 Python
python通过装饰器检查函数参数数据类型的方法
Mar 13 Python
用Python编写简单的定时器的方法
May 02 Python
Python科学计算之Pandas详解
Jan 15 Python
python如何拆分含有多种分隔符的字符串
Mar 20 Python
Python标准库shutil用法实例详解
Aug 13 Python
Django网络框架之创建虚拟开发环境操作示例
Jun 06 Python
什么是Python变量作用域
Jun 03 Python
python 安装移动复制第三方库操作
Jul 13 Python
Python批量解压&压缩文件夹的示例代码
Apr 04 Python
python开发人人对战的五子棋小游戏
May 02 Python
pytorch多进程加速及代码优化方法
Aug 19 #Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
Aug 19 #Python
python opencv实现证件照换底功能
Aug 19 #Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
Aug 19 #Python
将Pytorch模型从CPU转换成GPU的实现方法
Aug 19 #Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
Aug 19 #Python
在pytorch中为Module和Tensor指定GPU的例子
Aug 19 #Python
You might like
apache php模块整合操作指南
2012/11/16 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
2013/06/18 PHP
php基于curl重写file_get_contents函数实例
2016/11/08 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
thinkphp5+layui实现的分页样式示例
2019/10/08 PHP
PHP SESSION跨页面传递失败解决方案
2020/12/11 PHP
JavaScript每天定时更换皮肤样式的方法
2015/07/01 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
angularjs表格ng-table使用备忘录
2016/03/09 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
快速掌握jQuery插件WebUploader文件上传
2016/11/07 Javascript
Vue原理剖析 实现双向绑定MVVM
2017/05/03 Javascript
Angular.Js中过滤器filter与自定义过滤器filter实例详解
2017/05/08 Javascript
关于jQuery库冲突的完美解决办法
2017/05/20 jQuery
Nodejs中Express 常用中间件 body-parser 实现解析
2017/05/22 NodeJs
Vue中的Props(不可变状态)
2018/09/29 Javascript
javascript操作元素的常见方法小结
2019/11/13 Javascript
探索浏览器页面关闭window.close()的使用详解
2020/08/21 Javascript
用vue设计一个日历表
2020/12/03 Vue.js
零基础写python爬虫之神器正则表达式
2014/11/06 Python
在Django的模型中添加自定义方法的示例
2015/07/21 Python
python web.py开发httpserver解决跨域问题实例解析
2018/02/12 Python
python实现多线程网页下载器
2018/04/15 Python
Python中py文件引用另一个py文件变量的方法
2018/04/29 Python
Python中偏函数用法示例
2018/06/07 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
深入了解Python在HDA中的应用
2019/09/05 Python
使用python实现学生信息管理系统
2021/02/25 Python
HTML5 Canvas实现文本对齐的方法总结
2016/03/24 HTML / CSS
说出数据连接池的工作机制是什么?
2013/04/19 面试题
后勤部长岗位职责
2013/12/14 职场文书
办公室副主任职责范本
2014/03/08 职场文书
工商局局长个人对照检查材料思想汇报
2014/09/23 职场文书
高一英语教学反思
2016/03/03 职场文书
MySQL实例精讲单行函数以及字符数学日期流程控制
2021/10/15 MySQL
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers