20行代码教你用python给证件照换底色的方法示例


Posted in Python onFebruary 05, 2021

1.图片来源

该图片来源于百度图片,如果侵权,请联系我删除!图片仅用于知识交流。

20行代码教你用python给证件照换底色的方法示例

2.读取图片并显示

  • imread():读取图片;
  • imshow():展示图片;
  • waitkey():设置窗口等待,如果不设置,窗口会一闪而过;
import cv2
import numpy as np
# 读取照片
img=cv2.imread('girl.jpg')

# 显示图像
cv2.imshow('img',img)

# 窗口等待的命令,0表示无限等待
cv2.waitKey(0)

效果如下:

20行代码教你用python给证件照换底色的方法示例

3.图片缩放

resize():图片缩放,其中fx和fy表示缩放比例,0.5表示缩放为以前的 一半。

import cv2
import numpy as np
# 读取照片
img=cv2.imread('girl.jpg')

# 图像缩放
img = cv2.resize(img,None,fx=0.5,fy=0.5)
rows,cols,channels = img.shape
print(rows,cols,channels)

# 显示图像
cv2.imshow('img',img)

# 窗口等待的命令,0表示无限等待
cv2.waitKey(0)

结果如下:

20行代码教你用python给证件照换底色的方法示例

4.将图片转换为灰度图像

三色图片有RGB三个颜色通道,无法进行腐蚀和膨胀的操作。这个就需要我们将彩色图片转换为hsv灰度图像后,再完成腐蚀和膨胀的操作。

cv2.cvtColor(img,cv2.COLOR_BGR2HSV)可以将彩色图片转化为hsv灰度图片。

import cv2
import numpy as np
# 读取照片
img=cv2.imread('girl.jpg')

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

# 图片转换为二值化图
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

# 显示图像
cv2.imshow('hsv',hsv)

# 窗口等待的命令,0表示无限等待
cv2.waitKey(0)

结果如下:

20行代码教你用python给证件照换底色的方法示例

5.将图片进行二值化处理

二值化处理是为了将图片转换为黑白图片。二值化类似于1表示男、2表示女,对于图像的处理我们也需要自定义一个最小值和最大值,这里分别用lower_blue和upper_blue表示

  • lower_blue = np.array([90,70,70])
  • upper_blue = np.array([110,255,255])
  • inRange(hsv, lower_blue, upper_blue)将图片进行二值化操作。
import cv2
import numpy as np
# 读取照片
img=cv2.imread('girl.jpg')

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

# 图片转换为灰度图
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
cv2.imshow('hsv',hsv)

# 图片的二值化处理
lower_blue = np.array([90,70,70])
upper_blue = np.array([110,255,255])
mask = cv2.inRange(hsv, lower_blue, upper_blue)


# 显示图像
cv2.imshow('mask',mask)

# 窗口等待的命令,0表示无限等待
cv2.waitKey(0)

结果如下:

20行代码教你用python给证件照换底色的方法示例

缺点:我们观察第三章图片,发现黑色区域有时候会出现一些噪声(白点),这里可能显示的不是很明显,有的图片显示的很明显,这就需要我们进行腐蚀或膨胀。

6.图象的腐蚀和膨胀

上面的图象进行二值化后,出现了一些噪声,我们可以采用腐蚀或膨胀进行图片的处理,观察哪种的处理效果好一些。

  • erode(mask,None,iterations=1)进行腐蚀操作。
  • dilate(erode,None,iterations=1)进行膨胀操作。
import cv2
import numpy as np
# 读取照片
img=cv2.imread('girl.jpg')

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

# 图片转换为灰度图
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
cv2.imshow('hsv',hsv)

# 图片的二值化处理
lower_blue=np.array([90,70,70])
upper_blue=np.array([110,255,255])
mask = cv2.inRange(hsv, lower_blue, upper_blue)


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

dilate=cv2.dilate(erode,None,iterations=1)
cv2.imshow('dilate',dilate)


# 窗口等待的命令,0表示无限等待
cv2.waitKey(0)

结果如下:

20行代码教你用python给证件照换底色的方法示例

观察上图:对于这个图片,无论是腐蚀或膨胀,都起到了很好的去图片噪声的操作,我们使用腐蚀后的图片也可以,我们使用膨胀后的图片也可以。

7.遍历每个像素点进行颜色替换

图片是由每一个像素点组成的,我们就是要找到腐蚀后得到图片的,白色底色处的像素点,然后将原图中对应位置处的像素点,替换为红色。

import cv2
import numpy as np
# 读取照片
img=cv2.imread('girl.jpg')

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

# 图片转换为灰度图
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
cv2.imshow('hsv',hsv)

# 图片的二值化处理
lower_blue=np.array([90,70,70])
upper_blue=np.array([110,255,255])
mask = cv2.inRange(hsv, lower_blue, upper_blue)


#腐蚀膨胀
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 erode[i,j]==255: # 像素点为255表示的是白色,我们就是要将白色处的像素点,替换为红色
   img[i,j]=(0,0,255) # 此处替换颜色,为BGR通道,不是RGB通道
cv2.imshow('res',img)

# 窗口等待的命令,0表示无限等待
cv2.waitKey(0)

效果如下:

20行代码教你用python给证件照换底色的方法示例

到此这篇关于20行代码教你用python给证件照换底色的方法示例的文章就介绍到这了,更多相关python 证件照换底色内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python时间整形转标准格式的示例分享
Feb 14 Python
Python实现的百度站长自动URL提交小工具
Jun 27 Python
Python3中的真除和Floor除法用法分析
Mar 16 Python
python中常用的九种预处理方法分享
Sep 11 Python
浅谈django中的认证与登录
Oct 31 Python
python 实现tar文件压缩解压的实例详解
Aug 20 Python
Python类的继承和多态代码详解
Dec 27 Python
深入浅析Python2.x和3.x版本的主要区别
Nov 30 Python
python flask框架实现重定向功能示例
Jul 02 Python
Django REST framework 视图和路由详解
Jul 19 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
Jul 14 Python
详解pycharm2020.1.1专业版安装指南(推荐)
Aug 07 Python
浅谈盘点5种基于Python生成的个性化语音方法
Feb 05 #Python
Python环境搭建过程从安装到Hello World
Feb 05 #Python
Python使用pyenv实现多环境管理
Feb 05 #Python
python中的unittest框架实例详解
Feb 05 #Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
Feb 04 #Python
用60行代码实现Python自动抢微信红包
Feb 04 #Python
Python+Appium实现自动化清理微信僵尸好友的方法
Feb 04 #Python
You might like
超级简单的发送邮件程序
2006/10/09 PHP
php筛选不存在的图片资源
2015/04/28 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
2019/10/23 PHP
你一定会收藏的Nodejs代码片段
2016/02/04 NodeJs
jQuery实现HTML表格单元格的合并功能
2016/04/06 Javascript
实例讲解jQuery中对事件的命名空间的运用
2016/05/24 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
浅谈angularJS中的事件
2016/07/12 Javascript
js实现下拉菜单效果
2017/03/01 Javascript
js实现三级联动效果(简单易懂)
2017/03/27 Javascript
jquery实现简单实用的轮播器
2017/05/23 jQuery
深入理解ES6 Promise 扩展always方法
2017/09/26 Javascript
jQuery的Ajax接收java返回数据方法
2018/08/11 jQuery
详解Vue中使用Axios拦截器
2019/04/22 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
Python开发中爬虫使用代理proxy抓取网页的方法示例
2017/09/26 Python
Python将DataFrame的某一列作为index的方法
2018/04/08 Python
python绘制散点图并标记序号的方法
2018/12/11 Python
python+opencv实现高斯平滑滤波
2020/07/21 Python
python爬虫 批量下载zabbix文档代码实例
2019/08/21 Python
python matplotlib 画dataframe的时间序列图实例
2019/11/20 Python
opencv 图像滤波(均值,方框,高斯,中值)
2020/07/08 Python
Python Celery异步任务队列使用方法解析
2020/08/10 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
css3一款3D字体带阴影效果的实现步骤
2013/03/20 HTML / CSS
新西兰购物网站:TheMarket NZ
2020/09/19 全球购物
非常详细的C#面试题集
2016/07/13 面试题
渔夫的故事教学反思
2014/02/14 职场文书
房产公证书范本
2014/04/10 职场文书
爱耳日宣传活动总结
2014/07/05 职场文书
大学生团员个人总结
2015/02/14 职场文书
签订劳动合同通知书
2015/04/16 职场文书
党员承诺书范文2015
2015/04/27 职场文书
CSS实现多个元素在盒子内两端对齐效果
2021/03/30 HTML / CSS
Python实现数据的序列化操作详解
2022/07/07 Python