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使用PyGame模块播放声音的方法
May 20 Python
对python中return和print的一些理解
Aug 18 Python
Python实现基于二叉树存储结构的堆排序算法示例
Dec 08 Python
基于wxPython的GUI实现输入对话框(2)
Feb 27 Python
浅谈python3 构造函数和析构函数
Mar 12 Python
Python 实现自动完成A4标签排版打印功能
Apr 09 Python
python print 格式化输出,动态指定长度的实现
Apr 12 Python
python要安装在哪个盘
Jun 15 Python
详解Python IO口多路复用
Jun 17 Python
Python使用Selenium模拟浏览器自动操作功能
Sep 08 Python
python字典的元素访问实例详解
Jul 21 Python
Python机器学习应用之工业蒸汽数据分析篇详解
Jan 18 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
浅谈PHP调用Webservice思路及源码分享
2014/06/04 PHP
php实现设计模式中的单例模式详解
2014/10/11 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
2016/03/17 PHP
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
2007/03/24 Javascript
Javascript学习笔记二 之 变量
2010/12/15 Javascript
js调试系列 源码定位与调试[基础篇]
2014/06/18 Javascript
jQuery中parents()方法用法实例
2015/01/07 Javascript
javascript实现复选框选中属性
2015/03/25 Javascript
Bootstrap每天必学之基础排版
2015/11/20 Javascript
js+html5实现复制文字按钮
2017/07/15 Javascript
详解webpack进阶之loader篇
2017/08/23 Javascript
elemetUi 组件--el-upload实现上传Excel文件的实例
2017/10/27 Javascript
AngularJs点击状态值改变背景色的实例
2017/12/18 Javascript
关于ES6箭头函数中的this问题
2018/02/27 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
2018/06/14 Javascript
jQuery实现获取选中复选框的值实例详解
2018/06/28 jQuery
简述JS浏览器的三种弹窗
2018/07/15 Javascript
js实现div色块碰撞
2020/01/16 Javascript
浅谈Vue开发人员的7个最好的VSCode扩展
2021/01/20 Vue.js
[02:32]DOTA2亚洲邀请赛 VG战队巡礼
2015/02/03 DOTA
Python使用scrapy抓取网站sitemap信息的方法
2015/04/08 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
基于python代码实现简易滤除数字的方法
2018/07/17 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
2018/10/29 Python
PyQt5实现QLineEdit添加clicked信号的方法
2019/06/25 Python
在python中用url_for构造URL的方法
2019/07/25 Python
Python批量处理csv并保存过程解析
2020/05/16 Python
Python txt文件如何转换成字典
2020/11/03 Python
Forever 21美国官网:美国标志性快时尚品牌
2017/02/20 全球购物
《寓言两则》教学反思
2014/02/27 职场文书
植树造林的宣传标语
2014/06/23 职场文书
2015年教学工作总结
2015/04/02 职场文书
护士年终工作总结不会写?各科护士模板总结
2020/01/02 职场文书
Tomcat执行startup.bat出现闪退的原因及解决办法
2022/04/20 Servers