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常用的日期时间处理方法示例
Feb 08 Python
python实现类的静态变量用法实例
May 08 Python
Python数据分析之真实IP请求Pandas详解
Nov 18 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
Jan 09 Python
树莓派使用USB摄像头和motion实现监控
Jun 22 Python
Python爬取知乎图片代码实现解析
Sep 17 Python
解析Python3中的Import
Oct 13 Python
python自动分箱,计算woe,iv的实例代码
Nov 22 Python
为什么相对PHP黑python的更少
Jun 21 Python
Python2手动安装更新pip过程实例解析
Jul 16 Python
使用python绘制分组对比柱状图
Apr 21 Python
详解NumPy中的线性关系与数据修剪压缩
May 25 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
关于BIG5-HKSCS的解决方法
2007/03/20 PHP
PHP $_FILES中error返回值详解
2014/01/30 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
2014/06/23 PHP
php实现的通用图片处理类
2015/03/24 PHP
php调用自己java程序的方法详解
2016/05/13 PHP
JQuery文本框高亮显示插件代码
2011/04/02 Javascript
禁用页面部分JavaScript方法的具体实现
2013/07/31 Javascript
javascript几个易错点记录
2014/11/26 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
2016/10/21 Javascript
headjs实现网站并行加载但顺序执行JS
2016/11/29 Javascript
使用BootStrap实现悬浮窗口的效果
2016/12/13 Javascript
详解使用vue实现tab 切换操作
2017/07/03 Javascript
vue实现word,pdf文件的导出功能
2018/07/31 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
2018/08/08 jQuery
如何使用VuePress搭建一个类型element ui文档
2019/02/14 Javascript
详解微信小程序获取当前时间及日期的方法
2019/04/28 Javascript
vue+egg+jwt实现登录验证的示例代码
2019/05/18 Javascript
vue点击自增和求和的实例代码
2019/11/06 Javascript
深入学习Python中的上下文管理器与else块
2017/08/27 Python
Python使用django框架实现多人在线匿名聊天的小程序
2017/11/29 Python
在pycharm中使用git版本管理以及同步github的方法
2019/01/16 Python
python3正则提取字符串里的中文实例
2019/01/31 Python
python async with和async for的使用
2019/06/20 Python
python常用函数与用法示例
2019/07/02 Python
DjangoWeb使用Datatable进行后端分页的实现
2020/05/18 Python
北京华建集团SQL面试题
2014/06/03 面试题
北京一家公司的.net开发工程师笔试题
2012/04/17 面试题
中国入世承诺
2014/04/01 职场文书
法制教育演讲稿
2014/09/10 职场文书
公积金贷款承诺书
2015/04/30 职场文书
go xorm框架的使用
2021/05/22 Golang
动画《朋友游戏》公开佐藤友生绘制的开播纪念绘
2022/04/06 日漫
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android