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使用Apriori算法进行关联性解析
Dec 21 Python
Python 最大概率法进行汉语切分的方法
Dec 14 Python
详解python之heapq模块及排序操作
Apr 04 Python
Python正则表达式实现简易计算器功能示例
May 07 Python
Python 实现交换矩阵的行示例
Jun 26 Python
python绘制直方图和密度图的实例
Jul 08 Python
使用python os模块复制文件到指定文件夹的方法
Aug 22 Python
python 读取更新中的log 或其它文本方式
Dec 24 Python
Python无损压缩图片的示例代码
Aug 06 Python
PyCharm常用配置和常用插件(小结)
Feb 06 Python
Python insert() / append() 用法 Leetcode实战演示
Mar 31 Python
Python基础之操作MySQL数据库
May 06 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
PHP 加密解密内部算法
2010/04/22 PHP
PHP+JS实现大规模数据提交的方法
2015/07/02 PHP
PHP中set error handler函数用法小结
2015/11/11 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
2017/07/19 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
用JavaScript编写COM组件的步骤
2009/03/17 Javascript
JavaScript中数组的排序、乱序和搜索实现代码
2011/11/30 Javascript
更换select下拉菜单背景样式的实现代码
2011/12/20 Javascript
jquery remove方法应用详解
2012/11/22 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
2013/11/18 Javascript
js实现点击文本框显示日期选择器特效代码分享
2020/05/21 Javascript
基于javascript实现文字无缝滚动效果
2016/03/22 Javascript
实现一个简单的vue无限加载指令方法
2017/01/10 Javascript
微信小程序之发送短信倒计时功能
2017/08/30 Javascript
js 判断一个数字是不是2的n次方幂的实例
2017/11/26 Javascript
vue.js项目中实用的小技巧汇总
2017/11/29 Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
2018/02/21 Javascript
layui table 参数设置方法
2018/08/14 Javascript
vuedraggable+element ui实现页面控件拖拽排序效果
2020/07/29 Javascript
Python 自动化表单提交实例代码
2017/06/08 Python
python mysql断开重连的实现方法
2019/07/26 Python
Python 私有化操作实例分析
2019/11/21 Python
python解释器安装教程的方法步骤
2020/07/02 Python
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
Expedia加拿大官方网站:加拿大最大的在线旅游提供商
2017/12/31 全球购物
Foreo国际站:Foreo International
2018/10/29 全球购物
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
三星法国官方网站:Samsung法国
2019/10/31 全球购物
缓刑人员的思想汇报
2014/01/11 职场文书
《千年梦圆在今朝》教学反思
2014/02/24 职场文书
寄语学生的话
2014/04/10 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
歌颂党的演讲稿
2014/09/10 职场文书
四风问题党员个人整改措施
2014/10/27 职场文书
食品安全主题班会
2015/08/13 职场文书
团队合作精神学习心得体会
2016/01/19 职场文书