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中对list去重的多种方法
Sep 18 Python
Python列表生成器的循环技巧分享
Mar 06 Python
wxPython定时器wx.Timer简单应用实例
Jun 03 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
Jun 07 Python
Python实现的文本编辑器功能示例
Jun 30 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
Jul 11 Python
python3.7.0的安装步骤
Aug 27 Python
在ubuntu16.04中将python3设置为默认的命令写法
Oct 31 Python
python3中类的继承以及self和super的区别详解
Jun 26 Python
Python高级特性 切片 迭代解析
Aug 23 Python
详解Python实现进度条的4种方式
Jan 15 Python
解决pytorch-yolov3 train 报错的问题
Feb 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
PHP5 面向对象程序设计
2008/02/13 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
2014/07/24 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
php获取linux命令结果的实例
2017/03/13 PHP
js+xml生成级联下拉框代码
2012/07/24 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
js判断浏览器是否支持严格模式的方法
2016/10/04 Javascript
bootstrap中的 form表单属性role=&quot;form&quot;的作用详解
2017/01/20 Javascript
node操作mysql数据库实例详解
2017/03/17 Javascript
微信小程序中子页面向父页面传值实例详解
2017/03/20 Javascript
Angular项目中$scope.$apply()方法的使用详解
2017/07/26 Javascript
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
Vue实现点击后文字变色切换方法
2018/02/11 Javascript
Angular搜索场景中使用rxjs的操作符处理思路
2018/05/30 Javascript
记一次webpack3升级webpack4的踩坑经历
2018/06/12 Javascript
JS常见构造模式实例对比分析
2018/08/27 Javascript
layui 富文本编辑器和textarea值的相互传递方法
2019/09/18 Javascript
[03:03]2014DOTA2西雅图国际邀请赛 Alliance战队巡礼
2014/07/07 DOTA
[02:59]DOTA2完美大师赛主赛事第三日精彩集锦
2017/11/25 DOTA
python正则表达式去掉数字中的逗号(python正则匹配逗号)
2013/12/25 Python
python简单的函数定义和用法实例
2015/05/07 Python
python直接访问私有属性的简单方法
2016/07/25 Python
python3 发送任意文件邮件的实例
2018/01/23 Python
Windows下PyCharm安装图文教程
2018/08/27 Python
浅谈django的render函数的参数问题
2018/10/16 Python
python opencv捕获摄像头并显示内容的实现
2019/07/11 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
2019/08/15 Python
Python常用模块os.path之文件及路径操作方法
2019/12/03 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
2020/01/07 Python
基于Python爬取fofa网页端数据过程解析
2020/07/13 Python
什么是Python包的循环导入
2020/09/08 Python
百度软件工程师职位
2013/02/14 面试题
关于保护环境的标语
2014/06/09 职场文书
诚信高考倡议书
2019/06/24 职场文书
利用Python判断你的密码难度等级
2021/06/02 Python