在我们的生活中常常要用到各种底色要求的证件电子照,红底、蓝底、或者白底,而假如你手上只有一种底色的证件照,你又不想再去拍又不会PS怎么办?今天教你们用OpenCV和Python给你的证件照换底色。

  • Python3

  • numpy函数库

  • OpenCV库

  • Windows10 + Anaconda+Pycharm

1.读取要换底色的图片

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

import cv2
import numpy as np# 读取照片并显示
image=cv2.imread('yang.jpg')
cv2.imshow('image',image)

2.对图片进行缩放

证件照原图太大,不易显示,cv2.resize函数进行缩放处理。

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

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

cv2.cvtColor函数将读取的图像默认是BGR格式转换为HSV格式,将彩色图片转换为hsv灰度图片,之后才能进行腐蚀和膨胀操作。

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

4.对图片进行二值化处理

通过cv2.inRange函数对图片进行二值化操作,获取背景的mask,二值化处理视为了将灰度图片转换为黑白图片,如下图将红色的背景用白色表示,白色区域就是我们后面遍历像素点替换的条件,就是将白色的区域替换为蓝色。

cv2.inRange(hsv, lower_red, upper_red):在lower_red和upper_red两个阈值内的像素值设置为白色(255),而不在阈值区间内的像素值设置为黑色(0

# 图片的二值化处理
#红底变蓝底
#将在两个阈值内的像素值设置为白色(255),而不在阈值区间内的像素值设置为黑色(0)
lower_red= np.array([0,135,135])
upper_red = np.array([180,245,230])
mask = cv2.inRange(hsv, lower_red, upper_red)
# 显示图像
cv2.imshow('mask',mask)
# #蓝底变红底
# 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)

5.对图片进行腐蚀和膨胀

在进行二值化操作之后,我们可以看到黑色区域有一些噪声,嘴的部分是白的,还有少数白点,就cv2.erode或者cv2.dilate函数对图片再进行腐蚀和膨胀操作,均可以有效消除噪声。

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

6.遍历像素点替换背景颜色

对上述进行了腐蚀或者膨胀操作的图片进行像素点遍历,将白色区域的像素点的位置,也就是原图的背景部分的像素的对应的位置,替换成你想要替换的底色即可。

dilate[i,j]==255:  像素点为255表示的是白色,我们就要将白色处的像素点,替换为你想要的照片底色。

img[i,j]=(0,0,255): 此处替换颜色,为BGR通道,不是RGB通道,若是想要将红底变成蓝底img[i,j]=(255,0,0),若是想将蓝底变为红底则img[i,j]=(0,0,255),若是想变白底img[i,j]=(255,255,255)

# 遍历每个像素点,进行颜色的替换
for i in range(rows):for j in range(cols):if dilate[i,j]==255:    #像素点255表示白色img[i,j]=(255,0,0)  # 此处替换颜色,为BGR通道,不是RGB通道
cv2.imshow('res',img)
# 窗口等待的命令,0表示无限等待
cv2.waitKey(0)

红底变蓝底

蓝底变红底

变白底

完整代码在后台回复关键字:证件照,即可下载使用。

扫描二维码

获取更多精彩

码农的后花园

文章都看完了不点个

教你用OpenCV 和 Python给证件照换底色(蓝底 -红底-白底)相关推荐

  1. 教你用OpenCV 和 Python给证件照换底色(蓝底 <->红底->白底)

    在我们的生活中常常要用到各种底色要求的证件电子照,红底.蓝底.或者白底,而假如你手上只有一种底色的证件照,你又不想再去拍又不会PS怎么办?今天教你们用OpenCV和Python给你的证件照换底色. P ...

  2. python怎么改成白底_教你用OpenCV 和 Python给证件照换底色(蓝底 -红底-白底)...

    ​在我们的生活中常常要用到各种底色要求的证件电子照,红底.蓝底.或者白底,而假如你手上只有一种底色的证件照,你又不想再去拍又不会PS怎么办?今天教你们用OpenCV和Python给你的证件照换底色.P ...

  3. 基于python的证件照_20行代码教你用python给证件照换底色的方法示例

    1.图片来源 该图片来源于百度图片,如果侵权,请联系我删除!图片仅用于知识交流. 2.读取图片并显示 imread():读取图片: imshow():展示图片: waitkey():设置窗口等待,如果 ...

  4. python换照片底色_详解Python给照片换底色(蓝底换红底)

    现在网上出现了很多在线换底色的网页版工具是这么做的呢?其实用Python就可以实现. 环境要求 Python3 numpy函数库 opencv库 安装 下载适应版本的numpy函数库,我电脑是WIN1 ...

  5. 用python把图片换成蓝底_详解Python给照片换底色(蓝底换红底)

    现在网上出现了很多在线换底色的网页版工具是这么做的呢?其实用Python就可以实现. 环境要求 Python3 numpy函数库 opencv库 安装 下载适应版本的numpy函数库,我电脑是WIN1 ...

  6. python换图片_详解Python给照片换底色(蓝底换红底)

    现在网上出现了很多在线换底色的网页版工具是这么做的呢?其实用Python就可以实现. 环境要求 Python3 numpy函数库 opencv库 安装 下载适应版本的numpy函数库,我电脑是WIN1 ...

  7. python黑屏改成白底_详解Python给照片换底色(蓝底换红底)

    现在网上出现了很多在线换底色的网页版工具是这么做的呢?其实用Python就可以实现. 环境要求 Python3 numpy函数库 opencv库 安装 下载适应版本的numpy函数库,我电脑是WIN1 ...

  8. python界面怎么改颜色_20行代码教你用python给证件照换底色

    1.图片来源 该图片来源于百度图片,如果侵权,请联系我删除!图片仅用于知识交流.本文只是为了告诉大家:python其实有很多黑科技(牛逼的库),我们既可以用python处理工作中的一些事儿,同时我们也 ...

  9. python读取身份证照片信息_20行代码教你用Python改变身份证照片的背景色,python,给,证件照,换,底色...

    1.图片来源 该图片来源于百度图片,如果侵权,请联系我删除!图片仅用于知识交流. 2.读取图片并显示 imread():读取图片: imshow():展示图片: waitkey():设置窗口等待,如果 ...

最新文章

  1. 『非常重要』非矿工用户如何安全度过BCH11月算力战历史时刻!
  2. 虚幻UE4的后处理特效介绍
  3. wxWidgets:wxTreeListCtrl类用法
  4. jar包让别人看不到代码_【求助】反编译查看jar包的源代码,出现如下问题,求解单...
  5. 计算机win7无法安装,新机装不了Win7?照这个方法5分钟搞定!
  6. Android(IPC)进程间通讯1:详解Binder由来?
  7. 反编译C#的dll文件并修改,再重新生成dll
  8. Learn OpenGL(二)——顶点输入(Vertex Input)
  9. jquery 图像滑块_jQuery缩略图图像滑块– CSS,JavaScript
  10. 分页Pagination
  11. oracle 总僵尸进程,subprocess子进程kill后存在僵尸进程的原因及处理方法
  12. k8s部署-43-带你深入学习ingress-nginx(下)
  13. 牛客小白月赛2 J.美
  14. js中value^= 是什么意思
  15. 网站被黑被劫持跳转到其他网站该如何解决
  16. python输入名字、输出_Python输入输出
  17. C# 正则表达式 Regex类的使用
  18. 我想去 河南省 郑州春苑置业有限公司 上班 待遇好不好
  19. 中国企业级HTML5产业联盟成立 巨头联手共建新移动生态
  20. html5 编写网页代码,使用纯HTML5编写一款网页上的时钟的代码分享

热门文章

  1. Ubuntu18.04实装autoware1.14.0(ROS Melodic、QT5.9.5、BagRunning)
  2. 最小二乘法理解与应用
  3. 产品隐私政策与使用条款
  4. 某剧院有33排座位java_行测备考资料:数量关系深处隐藏的整除技巧
  5. C++初阶习题(牛客)【4】Fibonacci数列
  6. 【HJL-E6/A数字式交流电流继电器】
  7. 马踏棋盘问题的程序c语言,C语言马踏棋盘
  8. 《淘宝网开店 拍摄 修图 设计 装修 实战150招》一一2.5  商品摆放:营造氛围的搭配...
  9. 联想笔记本G510升级固态硬盘(SSD)血泪教程!!!
  10. 在Ubuntu服务器中挂载Google网络硬盘