• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    使用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完成证件照换底色的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • 详解Python给照片换底色(蓝底换红底)
    • 20行代码教你用python给证件照换底色的方法示例
    • python实现证件照换底功能
    • Python实现将蓝底照片转化为白底照片功能完整实例
    • 3行Python代码实现图像照片抠图和换底色的方法
    上一篇:OpenCV半小时掌握基本操作之图像金字塔
    下一篇:python pandas分组聚合详细
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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