基于OpenCV python3实现证件照换背景的方法


Posted in Python onMarch 22, 2019

简述

生活中经常要用到各种要求的证件照电子版,红底,蓝底,白底等,大部分情况我们只有其中一种,所以通过技术手段进行合成,用ps处理证件照,由于技术不到位,有瑕疵,所以想用python&openCV通过代码的方式实现背景颜色替换,加强一下对于openCV的学习,锻炼一下编码水平。

软件环境:

python3.5
opencv2
windows 10

图像载入

导入opencv库,使用imread函数读取图片

import cv2
import numpy as np

img=cv2.imread('zjz.jpg')

由于证件照太大,不方便显示,故进行缩放

#缩放
rows,cols,channels = img.shape
img=cv2.resize(img,None,fx=0.5,fy=0.5)
rows,cols,channels = img.shape
cv2.imshow('img',img)

原图如下

基于OpenCV python3实现证件照换背景的方法
(图片源于网络,已经马赛克处理,如有侵权,私信立即删除)

获取背景区域

首先将读取的图像默认BGR格式转换为HSV格式,然后通过inRange函数获取背景的mask。
HSV颜色范围参数可调节根据这篇文章

hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
lower_blue=np.array([78,43,46])
upper_blue=np.array([110,255,255])
mask = cv2.inRange(hsv, lower_blue, upper_blue)
cv2.imshow('Mask', mask)

获得的mask如下图

基于OpenCV python3实现证件照换背景的方法 

如图所示蓝色的背景在图中用白色表示,白色区域就是要替换的部分,但是黑色区域内有白点干扰,所以进一步优化。
腐蚀和膨胀

#腐蚀膨胀
erode=cv2.erode(mask,None,iterations=1)
cv2.imshow('erode',erode)
dilate=cv2.dilate(erode,None,iterations=1)
cv2.imshow('dilate',dilate)

经过腐蚀和膨胀操作后如下图

基于OpenCV python3实现证件照换背景的方法 

处理后图像单独白色点消失。

替换背景色

遍历全部像素点,如果该颜色为dilate里面为白色(255)则说明该点所在背景区域,于是在原图img中进行颜色替换。

#遍历替换
for i in range(rows):
 for j in range(cols):
  if dilate[i,j]==255:
   img[i,j]=(0,0,255)#此处替换颜色,为BGR通道
cv2.imshow('res',img)

最终结果如下

基于OpenCV python3实现证件照换背景的方法
(图片源于网络,已经马赛克处理,如有侵权,私信立即删除)

总结

最开始想直接通过遍历全图进行替换背景色,但是图像中难免有些像素点和背景色一样,造成了干扰,导致最后结果不尽人意,所以想通过这种方法进行处理。显然最后有明显的ps痕迹。

最后贴上完整代码,不足之处欢迎各位指正!

import cv2
import numpy as np

img=cv2.imread('zjz.jpg')
#缩放
rows,cols,channels = img.shape
img=cv2.resize(img,None,fx=0.5,fy=0.5)
rows,cols,channels = img.shape
cv2.imshow('img',img)

#转换hsv
hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
lower_blue=np.array([78,43,46])
upper_blue=np.array([110,255,255])
mask = cv2.inRange(hsv, lower_blue, upper_blue)
cv2.imshow('Mask', mask)

#腐蚀膨胀
erode=cv2.erode(mask,None,iterations=1)
cv2.imshow('erode',erode)
dilate=cv2.dilate(erode,None,iterations=1)
cv2.imshow('dilate',dilate)

#遍历替换
for i in range(rows):
 for j in range(cols):
  if dilate[i,j]==255:
   img[i,j]=(0,0,255)#此处替换颜色,为BGR通道
cv2.imshow('res',img)

cv2.waitKey(0)
cv2.destroyAllWindows()

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

Python 相关文章推荐
在IIS服务器上以CGI方式运行Python脚本的教程
Apr 25 Python
Python爬取三国演义的实现方法
Sep 12 Python
python实现学生管理系统
Jan 11 Python
tensorflow获取变量维度信息
Mar 10 Python
PyQt5每天必学之弹出消息框
Apr 19 Python
Python创建普通菜单示例【基于win32ui模块】
May 09 Python
详解PyCharm安装MicroPython插件的教程
Jun 24 Python
python机器学习包mlxtend的安装和配置详解
Aug 21 Python
python安装scipy的步骤解析
Sep 28 Python
python实现LRU热点缓存及原理
Oct 29 Python
python求一个字符串的所有排列的实现方法
Feb 04 Python
浅谈Python响应式类库RxPy
Jun 14 Python
详解Python给照片换底色(蓝底换红底)
Mar 22 #Python
详解python-图像处理(映射变换)
Mar 22 #Python
python中如何使用分步式进程计算详解
Mar 22 #Python
浅谈Python基础—判断和循环
Mar 22 #Python
浅谈python常用程序算法
Mar 22 #Python
python实现移位加密和解密
Mar 22 #Python
python实现可逆简单的加密算法
Mar 22 #Python
You might like
Codeigniter整合Tank Auth权限类库详解
2014/06/12 PHP
CodeIgniter安全相关设置汇总
2014/07/03 PHP
PHP strcmp()和strcasecmp()的区别实例
2016/11/05 PHP
php+Ajax无刷新验证用户名操作实例详解
2019/03/04 PHP
基于PHP实现用户在线状态检测
2020/11/10 PHP
基于jQuery的星级评分插件
2011/08/12 Javascript
jQuery代码优化 选择符篇
2011/11/01 Javascript
web性能优化之javascript性能调优
2012/12/28 Javascript
jQuery插件开发基础简单介绍
2013/01/07 Javascript
jquery表格内容筛选实现思路及代码
2013/04/16 Javascript
JS字符串拼接在ie中都报错的解决方法
2014/03/27 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
AngularJS入门心得之directive和controller通信过程
2016/01/25 Javascript
Vue.use源码分析
2017/04/22 Javascript
weui框架实现上传、预览和删除图片功能代码
2017/08/24 Javascript
Vue加载json文件的方法简单示例
2019/01/28 Javascript
vue router 组件的高级应用实例代码
2019/04/08 Javascript
JavaScript监听一个DOM元素大小变化
2020/04/26 Javascript
[05:11]TI9战队采访——VIRTUSPRO
2019/08/22 DOTA
python使用paramiko模块实现ssh远程登陆上传文件并执行
2014/01/27 Python
连接Python程序与MySQL的教程
2015/04/29 Python
python http接口自动化脚本详解
2018/01/02 Python
python构建深度神经网络(DNN)
2018/03/10 Python
python实现五子棋小游戏
2020/03/25 Python
Python正则表达式实现简易计算器功能示例
2019/05/07 Python
pycharm访问mysql数据库的方法步骤
2019/06/18 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
python将unicode和str互相转化的实现
2020/05/11 Python
香港时尚女装购物网站:ZAFUL
2017/07/19 全球购物
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
《山谷中的谜底》教学反思
2014/04/26 职场文书
高中课程设置方案
2014/05/28 职场文书
医学专业毕业生推荐信
2014/07/12 职场文书
副校长个人对照检查材料思想汇报
2014/10/04 职场文书
中国古代史学名著《战国策》概述
2019/08/09 职场文书
导游词之神仙居景区
2019/11/15 职场文书