python opencv实现证件照换底功能


Posted in Python onAugust 19, 2019

本文实例为大家分享了python opencv实现证件照换底功能的具体代码,供大家参考,具体内容如下

思路:先转到HSV空间,利用颜色提取背景制作掩模版mask,然后通过按位操作提取人像和制作新背景,最后叠加背景和人像得到换底后照片

代码

#-*-coding:utf-8-*-
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)
  aim=np.uint8([[im[0,0,:]]])
  hsv_aim=cv2.cvtColor(aim,cv2.COLOR_BGR2HSV)
  mask=cv2.inRange(im_hsv,np.array([hsv_aim[0,0,0]-5,100,100]),np.array([hsv_aim[0,0,0]+5,255,255]))
  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':mask,'img':img}
  for key in image:
    cv2.namedWindow(key)
    cv2.imshow(key,image[key])
  cv2.waitKey(0)
  return img
#test
if __name__=='__main__':
  img=cvtBackground('./photo.jpg',[0,0,180])

结果

python opencv实现证件照换底功能

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

Python 相关文章推荐
python Pygame的具体使用讲解
Nov 03 Python
Python爬虫天气预报实例详解(小白入门)
Jan 24 Python
python增加矩阵维度的实例讲解
Apr 04 Python
对python cv2批量灰度图片并保存的实例讲解
Nov 09 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
Mar 14 Python
利用pandas向一个csv文件追加写入数据的实现示例
Apr 23 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
May 25 Python
你需要学会的8个Python列表技巧
Jun 24 Python
Python如何实现自带HTTP文件传输服务
Jul 08 Python
Python抖音快手代码舞(字符舞)的实现方法
Feb 07 Python
Python+uiautomator2实现自动刷抖音视频功能
Apr 29 Python
Pytorch中Softmax和LogSoftmax的使用详解
Jun 05 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
pytorch使用指定GPU训练的实例
Aug 19 #Python
关于pytorch多GPU训练实例与性能对比分析
Aug 19 #Python
pytorch 更改预训练模型网络结构的方法
Aug 19 #Python
You might like
PHP伪静态页面函数附使用方法
2008/06/20 PHP
LotusPhp笔记之:Logger组件的使用方法
2013/05/06 PHP
apache配置虚拟主机的方法详解
2013/06/17 PHP
ThinkPHP令牌验证实例
2014/06/18 PHP
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
通过Jquery的Ajax方法读取将table转换为Json
2014/05/31 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
iScroll中事件点击触发两次解决方案
2015/03/11 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
2015/04/12 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
2016/01/27 Javascript
IE8兼容Jquery.validate.js的问题
2016/12/01 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
2017/06/14 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
2017/07/05 Javascript
常见的浏览器存储方式(cookie、localStorage、sessionStorage)
2019/05/07 Javascript
小程序实现新用户判断并跳转激活的方法
2019/05/20 Javascript
[01:05]DOTA2完美大师赛趣味视频之选手教你打职业
2017/11/23 DOTA
介绍Python中的文档测试模块
2015/04/28 Python
基于Python的文件类型和字符串详解
2017/12/21 Python
Python使用装饰器进行django开发实例代码
2018/02/06 Python
tensorflow获取变量维度信息
2018/03/10 Python
Python Numpy 数组的初始化和基本操作
2018/03/13 Python
PyQt5实现拖放功能
2018/04/25 Python
Python中拆分字符串的操作方法
2019/07/23 Python
python3实现的zip格式压缩文件夹操作示例
2019/08/17 Python
pd.DataFrame统计各列数值多少的实例
2019/12/05 Python
Python变量作用域LEGB用法解析
2020/02/04 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
python在linux环境下安装skimage的示例代码
2020/10/14 Python
浅谈Python __init__.py的作用
2020/10/28 Python
离婚案件答辩状
2015/05/22 职场文书
赡养老人协议书范本
2015/08/06 职场文书
感谢师恩主题班会
2015/08/17 职场文书
vscode中使用npm安装babel的方法
2021/08/02 Javascript
python自动化测试通过日志3分钟定位bug
2021/11/20 Python