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中设置变量作为默认值时容易遇到的错误
Apr 03 Python
Python日志模块logging简介
Apr 13 Python
Python操作MongoDB数据库PyMongo库使用方法
Apr 27 Python
Python操作MySQL数据库9个实用实例
Dec 11 Python
Python实现Smtplib发送带有各种附件的邮件实例
Jun 05 Python
浅谈使用Python变量时要避免的3个错误
Oct 30 Python
用Python中的turtle模块画图两只小羊方法
Apr 09 Python
python3 打印输出字典中特定的某个key的方法示例
Jul 06 Python
Win10下python 2.7与python 3.7双环境安装教程图解
Oct 12 Python
哪些是python中web开发框架
Jun 17 Python
Python中免验证跳转到内容页的实例代码
Oct 23 Python
Python+OpenCV检测灯光亮点的实现方法
Nov 02 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
建立文件交换功能的脚本(二)
2006/10/09 PHP
解析PHP 使用curl提交json格式数据
2013/06/29 PHP
PHP新建类问题分析及解决思路
2015/11/19 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
2015/12/21 PHP
PHP下载远程图片并保存到本地方法总结
2016/01/22 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
2018/05/23 PHP
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
用Javascript 获取页面元素的位置的代码
2009/09/25 Javascript
原生js实现查找/添加/删除/指定元素的class
2013/04/12 Javascript
js Map List 遍历使用示例
2013/07/10 Javascript
jQuery实现拖拽效果插件的方法
2015/03/23 Javascript
jsMind通过鼠标拖拽的方式调整节点位置
2015/04/13 Javascript
jquery调整表格行tr上下顺序实例讲解
2016/01/09 Javascript
AngularJS基础 ng-model-options 指令简单示例
2016/08/02 Javascript
JavaScript中匿名函数的递归调用
2017/01/22 Javascript
js实现简易垂直滚动条
2017/02/22 Javascript
深入理解Promise.all
2018/08/08 Javascript
vue router 跳转后回到顶部的实例
2018/08/31 Javascript
mpvue写一个CPASS小程序的示例
2018/09/04 Javascript
js删除对象/数组中null、undefined、空对象及空数组方法示例
2018/11/14 Javascript
详解@angular/cli 改变默认启动端口两种方式
2018/11/29 Javascript
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
JavaScript如何实现防止重复的网络请求的示例
2021/01/28 Javascript
在Linux系统上安装Python的Scrapy框架的教程
2015/06/11 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
2020/04/14 Python
澳大利亚便宜的家庭购物网站:CrazySales
2018/02/06 全球购物
香港百佳网上超级市场:PARKNSHOP.com
2020/06/10 全球购物
vue 中 get / delete 传递数组参数方法
2021/03/23 Vue.js
数控技术与应用毕业生自荐信
2013/09/24 职场文书
幼儿运动会邀请函
2014/01/17 职场文书
小学教师听课制度
2014/02/01 职场文书
节能减耗标语
2014/06/21 职场文书
爱与责任师德演讲稿
2014/08/26 职场文书
2015年社区工会工作总结
2015/05/26 职场文书
初中数学课堂教学反思
2016/02/17 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书