python给证件照换底色

作者:神秘网友 发布时间:2021-02-27 20:21:17

python给证件照换底色

import cv2
import numpy as np
from tkinter import *
from tkinter import ttk
import tkinter as tk
import tkinter.filedialog
import os

root = Tk()
root.title('证件照背景色更换')
root.geometry('400x300')
SelectNum = tk.IntVar()  # 用来储存下面勾选项1中返回的0或1

FileName = ""
UsingColour = ""
DesColour = ""
DesSize1 = ""
DesSize2 = ""BlueRange = [[90, 70, 70], [110, 255, 255]]
RedRange = [[0,135,135], [180,245,230]] Blue = [219, 142, 67] Red = [0, 0, 255] White = [255, 255, 255]

def Button1Anwser():
global FileName
Path = Label(root, text='')
FileName = tkinter.filedialog.askopenfilename()
Path.config(text = FileName)
Path.grid(row=2, column=0, sticky=W)

def Button2Anwser():
global DesColour
global DesSize1
global DesSize2

ColNum = str(Descmb.get())
if ColNum == "蓝色":
DesColour = Blue
if ColNum == "红色":
DesColour = Red
if ColNum == "白色":
DesColour = White

img = cv2.imread(r'D:\id_photo\000.jpg')
img = cv2.resize(img,None,fx=0.5,fy=0.5)

Text = Label(root, text='')
Text.config(text='正在转换')
Text.grid(row=9, column=1)

# 缩放
rows, cols, channels = img.shape # 长 宽 通道数
rows, cols, channels = img.shape
cv2.imshow('img', img)

# 转换hsv
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # rgb转hsv
lower_colour = np.array([WhiteRange[0]])
upper_colour = np.array([WhiteRange[1]])
# 去除背景,低于lower_red和高于upper_red的部分分别变成0,lower_red~upper_red之间的值变成255
mask = cv2.inRange(hsv, lower_colour, upper_colour)

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

# 遍历替换
for i in range(rows):
for j in range(cols):
if dilate[i, j] == 255:
img[i, j] = (DesColour) # 此处替换颜色,为BGR通道
cv2.imshow('res', img)

Text = Label(root, text='')
Text.config(text='转换完成')
Text.grid(row=9, column=1)
if SelectNum.get() == 1:
DesSize1 = int(Size1.get())
DesSize2 = int(Size2.get())
img = cv2.resize(img, (DesSize1, DesSize2), interpolation=cv2.INTER_CUBIC)
cv2.imwrite(r'D:\id_photo\Result1.jpg', img)

cv2.waitKey(0)
cv2.destroyAllWindows()

# -------------------------------------界面---------------------------------
SelectFile = Button(root, text="待处理照片", command=Button1Anwser,width=10, height=1, bg="DarkGray", fg="white")
SelectFile.grid(row=1, column=0, sticky=W)

UsingCol = Label(root, text='')
UsingCol.config(text='当前背景颜色')
UsingCol.grid(row=3, column=0, sticky=W)

Usingcmb = ttk.Combobox(root)
Usingcmb.grid(row=4, column=0, sticky=W)
Usingcmb['value'] = ('白色')

DesCol = Label(root, text='')
DesCol.config(text='目标背景颜色')
DesCol.grid(row=5, column=0, sticky=W)

Descmb = ttk.Combobox(root)
Descmb.grid(row=6, column=0, sticky=W)
Descmb['value'] = ('蓝色', '红色', '白色')

PicSize1 = Label(root, text='目标像素:')
PicSize1.grid(row=7, sticky=W)

Select = tk.Checkbutton(root, text='调整像素', variable=SelectNum, onvalue=1, offvalue=0)
Select.grid(row=7, column=1, sticky=W)

Size1 = Entry(root)
Size1.place(width=5, height=1)
Size1.grid(row=8, column=0, sticky=W)
MultiText = Label(root, text='* ')
MultiText.grid(row=8, column=1)
Size2 = Entry(root)
Size2.place(width=5, height=1)
Size2.grid(row=8, column=2, sticky=W)

SelectFile = Button(root, text="开始转换", command=Button2Anwser, width=10, height=1, bg="DarkGray", fg="white")
SelectFile.grid(row=9, sticky=W)

python给证件照换底色 相关文章

  1. LeetCode | 0669. 修剪二叉搜索树【Python】

    问题 力扣 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树不应该改变保留在树中的元素的相对结构(即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存

  2. python 雷达图 转载:https://mp.weixin.qq.com/s/M1f0ItGQz3BKZTIe1ootYQ

    一、前言 我们平常玩游戏或者看电影的时候,会看到里面介绍各种人的能力指标。 以百度百科提供的漫威人物能力数值为例,如下图: 分别介绍了各个超级英雄的智力、力量、速度、耐力、能量发射、战斗技能。 但是吧,光是这样的表格,并不能很直观的看出英雄的

  3. LeetCode | 0662. 二叉树最大宽度【Python】

    问题 力扣 给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空。 每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入

  4. 用 Python 自动回复 QQ 消息,附源码!

    前言 近段时间,看了一下运用python实现app自动化的视频,觉得那上面的讲的不错,于是就用所学的知识做了一个程序,实现自动回复QQ消息。 1. 准备工作 1.1 安装client模块 打开命令窗口,输入命令: pip install appium-python-client 1.2 安装Appium Server

  5. python学习之面向对象

    python学习之面向对象 类定义 与python的函数定义类似,只不过把def关键字替换为class class calculator(): passa=calculator()print(type(a)) 输出 class ' main .calculator' 构造函数 与php的定义类似,只不过把__construct替换成__init__ class calculat

  6. LeetCode | 0655. 输出二叉树【Python】

    问题 力扣 在一个 m*n 的二维字符串数组中输出二叉树,并遵守以下规则: 行数 m 应当等于给定二叉树的高度。 列数 n 应当总是奇数。 根节点的值(以字符串格式给出)应当放在可放置的第一行正中间。根节点所在的行与列会将剩余空间划分为两部分(左下部分和

  7. Python合集之Python字符串编码转换

    最早的字符串编码是美国标准信息交换码,即ASCII码,他仅对10个数字,26个大写英文字母、26个小写英文字母及一些其他符号进行了编码。ASCII码最多只能表示256个符号,每个符号占一个字节。随着信息技术的发展,各国文字都需要进行编码,于是出现了GBK、GB231

  8. Python Mac Address Changer Script

    ## =======================================+SCRIPT BY Alexander Ezharjan+=======================================## ==========================================+date : 2020/12/12 +===============================================## =============

  9. Python计数器collections.Counter用法详解

    介绍: Python collections.Counter用法详解,Counter 计数器,顾名思义就是用来计数的,最主要的作用就是计算“可迭代序列中”各个元素(element)的数量。具体用法参看目录,基本涵盖了主要用法。 01.统计“可迭代序列”中每个元素的出现的次数 #首先引入

  10. python常用字符串功能

    2.25 python字符串(13个) 1.以XX开头(startswith()) v1="我爱我的祖国"result = v1.startswith("我")#判断是否以“我”开头,如果是返回"true"print(result)#true #例v1=input("请输入户籍所在地")result = v1.startswith("北京")if result:print("北京市

每天更新java,php,javaScript,go,python,nodejs,vue,android,mysql等相关技术教程,教程由网友分享而来,欢迎大家分享IT技术教程到本站,帮助自己同时也帮助他人!

Copyright 2020, All Rights Reserved. Powered by 跳墙网(www.tqwba.com)|网站地图|关键词