使用python半分钟轻松完成证件照换底色

导语

小伙伴们都知道,刚入职的时候都是要求新人入职带着自己的证件照的,这应该是几寸的来着,小编入职这么久都忘记了!!!

昨天下班之后跟之前的老朋友聚餐,其实一个兄弟的跟我说:“老表,你现在是编程的,又没得办法帮我一个忙?” 我这一听:“什么事儿?你说”

“我老婆前几天刚入职新公司,但是入职之后才晓得照片是需要蓝底儿的,主要是那个照证件照的离家太远了,索性问下你有啥办法没?“

那当然,为了节省他们的时间,这小忙我义不容辞,也就几分钟的事儿。​

正文

环境安装部分(1):

Python3.6;

numpy函数库;

opencv库。

pip install numpy

pip install opencv-python

证件照的读取与缩放比列(2):

# step1:
读取照片img = cv2.imread(file)
# step2:
缩放图片()img = cv2.resize(img, None, fx=1.5, fy=1.5)rows, cols, channels = img.shape

三色图片有RGB三个颜色通道,无法进行腐蚀和膨胀的操作。

这个就需要我们将彩色图片转换为hsv灰度图像后,再完成腐蚀和膨胀的操作(3):

# 展示图片
cv2.imshow("original...", img)# step2.1
图片转换为灰度图并显示hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

将图片进行二值化处理(4):

红底变蓝底,将在两个阈值内的像素值设置为白色(255)

而不在阈值区间内的像素值设置为黑色(0)

lower_red= np.array([0,125,125])
upper_red = np.array([255,255,255])
mask = cv2.inRange(hsv, lower_red, upper_red)

图象的腐蚀和膨胀、遍历每个像素点进行颜色替换(5):

#step3:腐蚀膨胀 若是腐蚀膨胀后仍有白色噪点,可以增加iterations的值
erode = cv2.erode(mask, None, iterations=5)
# cv2.imshow('erode', erode)dilate = cv2.dilate(erode, None, iterations=7)
# step3.1遍历每个像素点,进行颜色的替换'''
#若是想要将红底变成蓝底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表示白色,180为灰度            img[i,j]=(255,0,0)
# 此处替换颜色,为BGR通道,不是RGB通道

图片效果:

​​​​​​​​​​​

​​​​​

附源码:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import cv2
import numpy as np
file=r".\\pic\\小姐姐.png"
# step1:读取照片
img = cv2.imread(file)
# step1.2:缩放图片()
img = cv2.resize(img, None, fx=1.5, fy=1.5)
rows, cols, channels = img.shape
# 展示图片
cv2.imshow("original...", img)
# step2.1 图片转换为灰度图并显示
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# :图片的二值化处理
# 红底变蓝底
# 将在两个阈值内的像素值设置为白色(255),
#而不在阈值区间内的像素值设置为黑色(0)
#
lower_red= np.array([0,125,125])
upper_red = np.array([255,255,255])
mask = cv2.inRange(hsv, lower_red, upper_red)
#step2.3:腐蚀膨胀 若是腐蚀膨胀后仍有白色噪点,可以增加iterations的值
erode = cv2.erode(mask, None, iterations=5)
# cv2.imshow('erode', erode)
dilate = cv2.dilate(erode, None, iterations=7)
# step3遍历每个像素点,进行颜色的替换
'''
#若是想要将红底变成蓝底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表示白色,180为灰度
            img[i,j]=(255,0,0) # 此处替换颜色,为BGR通道,不是RGB通道
#step4 显示图像
new_file=r".\\pic\\小姐姐_blue.png"
cv2.imwrite(new_file, img)
res = cv2.imread(new_file)
cv2.imshow('result...', res)
# 窗口等待的命令,0表示无限等待
cv2.waitKey(0)

安啦!换证件照的小程序就写好了。换上自己的图片试试叭!!

以上就是使用python半分钟轻松完成证件照换底色的详细内容,更多关于python完成证件照换底色的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python实现将蓝底照片转化为白底照片功能完整实例

    本文实例讲述了Python实现将蓝底照片转化为白底照片功能.分享给大家供大家参考,具体如下: import cv2 import numpy as np img=cv2.imread('yay.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

  • 详解Python给照片换底色(蓝底换红底)

    现在网上出现了很多在线换底色的网页版工具是这么做的呢?其实用Python就可以实现. 环境要求 Python3 numpy函数库 opencv库 安装 下载适应版本的numpy函数库,我电脑是WIN10 64位,安装的函数库是 numpy-1.13.1+mkl-cp36-cp36m-win_amd64.whl 下载适应版本的opencv库,我电脑是WIN10 64位,安装的库是 opencv_python-3.3.1-cp36-cp36m-win_amd64.whl 安装以上两个库,WIN+R-

  • python实现证件照换底功能

    本来是在找交通识别的程序,然后凑巧看见了证件照换底,于是学习了一下~一开始在网上找了一个很普遍写的程序,但是效果并不好,想要放弃了,然后看见了这个,参考:python opencv实现证件照换底功能 本人基于此做了一些改进,便于自己运行和调试,还加了中值滤波,本人觉得效果还不错~ 代码: import cv2 import numpy as np def cvtBackground(path,color): """ 功能:给证件照更换背景色(常用背景色红.白.蓝) 输入参数:

  • 3行Python代码实现图像照片抠图和换底色的方法

    1.项目背景 对于不会PS的小伙伴,抠图是一个难度系数想当高的活儿,某宝照片抠图和证件照换底色均价都是5元RMB,所以今天要介绍的这款神工具,只要 3 行代码 5 秒钟就可以完成高精度抠图,甚至都不用会代码,点两下鼠标就完成了. 这里介绍Remove Image Background工具,它基于 Python.Ruby 和深度学习技术开发,通过强大的 AI 人工智能算法实现自动识别出前景主体与背景图,分分钟秒秒钟完成抠图. 这款抠图工具有两种简单方式:在线抠图和Python代码抠图,介绍如下.

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

    1.图片来源 该图片来源于百度图片,如果侵权,请联系我删除!图片仅用于知识交流. 2.读取图片并显示 imread():读取图片: imshow():展示图片: waitkey():设置窗口等待,如果不设置,窗口会一闪而过: import cv2 import numpy as np # 读取照片 img=cv2.imread('girl.jpg') # 显示图像 cv2.imshow('img',img) # 窗口等待的命令,0表示无限等待 cv2.waitKey(0) 效果如下: 3.图片缩

  • 使用python半分钟轻松完成证件照换底色

    导语 小伙伴们都知道,刚入职的时候都是要求新人入职带着自己的证件照的,这应该是几寸的来着,小编入职这么久都忘记了!!! 昨天下班之后跟之前的老朋友聚餐,其实一个兄弟的跟我说:"老表,你现在是编程的,又没得办法帮我一个忙?" 我这一听:"什么事儿?你说" "我老婆前几天刚入职新公司,但是入职之后才晓得照片是需要蓝底儿的,主要是那个照证件照的离家太远了,索性问下你有啥办法没?" 那当然,为了节省他们的时间,这小忙我义不容辞,也就几分钟的事儿.​ 正文

  • c#实现一个超实用的证件照换底色小工具(附源码)

    前言 大家应该都遇到过,在工作和生活中经常要填写一些个人资料,这时候往往需要放证件照上去,但是有时候人家要求是红底或白底,但是偏偏不巧的是你以前照了张蓝底的.这时候你想换个底色,于是在百度上一搜"证件照换底色",出来了一堆photoshop 教程,程序员可以找公司美工帮个忙,但是一般人就很纠结了,所以呢我就花了半天的功夫写了一个小软件,简化大家的操作难度,哎!现在越来越发现会写点程序真好.O(∩_∩)O哈哈~ 实现思路 (1)首先说一下像素的组成RGB 当前展示白色的RGB值是255,

  • php实现的证件照换底色功能示例【人像抠图/换背景图】

    本文实例讲述了php实现的证件照换底色功能.分享给大家供大家参考,具体如下: <?php //背景图和原图需要保持宽高要保持一样,这里的示例原图用的是蓝色背景 init(); function init(){ $old = '1.png'; $new = '2.png'; //创建一个png透明图 $img = imagecreatefrompng($old); setpng($img,$old,$new); } function setpng($imgid,$filename,$savenam

  • python opencv实现证件照换底功能

    本文实例为大家分享了python opencv实现证件照换底功能的具体代码,供大家参考,具体内容如下 思路:先转到HSV空间,利用颜色提取背景制作掩模版mask,然后通过按位操作提取人像和制作新背景,最后叠加背景和人像得到换底后照片 代码 #-*-coding:utf-8-*- import cv2 import numpy as np def cvtBackground(path,color): """ 功能:给证件照更换背景色(常用背景色红.白.蓝) 输入参数:path:

  • python实现抠图给证件照换背景源码

    本文实例为大家分享了python实现抠图给证件照换背景的具体代码,供大家参考,具体内容如下 import cv2 import numpy as np import matplotlib.pyplot as plt #建立显示图片的函数 def show(image): plt.imshow(image) plt.axis('off') plt.show() #导入前景图 img=cv2.imread('font.jpg') #图片导入 img = cv2.cvtColor(img,cv2.CO

  • 一个月入门Python爬虫学习,轻松爬取大规模数据

    Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这样的编程语言提供越来越多的优秀工具,让爬虫变得简单.容易上手. 利用爬虫我们可以获取大量的价值数据,从而获得感性认识中不能得到的信息,比如: 知乎:爬取优质答案,为你筛选出各话题下最优质的内容. 淘宝.京东:抓取商品.评论及销量数据,对各种商品及用户的消费场景进行分析. 安居客.链家:抓取房产买卖及租售信息,分析房价变化趋势.做不同区域的房价分

  • Python实现将多个空格换为一个空格.md的方法

    最近在文本预处理时遇到这个问题,解决方法如下: import re str1 = ' rwe fdsa fasf ' str1_after = re.sub(' +', '', str1) print(str1_after) 进一步的,可以将多个数字转换为特定符号,如'num',这一步在自然语言预处理中也常用,因为有时候我们并不关心是什么数,只关心是不是数字. import re str1 = '我的电话18888888888,邮箱1111111@qq.com' str1_after = re.

随机推荐