其他
求求你给你的微信头像戴个圣诞帽吧!
用 opencv 对头像添加圣诞帽 结合 PySimpleGUI 制作人性化圣诞帽添加软件
PIL PySimpleGUI cv2 os
pip install pillow #这是对模块PTL的安装
pip install opencv-python #这是对cv2的安装
pip install os
pip install PySimpleGui
import cv2
from PIL import Image
personPath = '3.jpg' #头像
hatPath = 'sheng.png' #圣诞帽
personImg = cv2.imread(personPath)
face_haar = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')#存放的绝对路径
faces = face_haar.detectMultiScale(personImg, 1.1,5)
personImg = Image.open(personPath)
personImg = personImg.convert('RGBA')
hatImg = Image.open(hatPath)
hatImg = hatImg.convert('RGBA')
for face_x,face_y,face_w,face_h in faces:
face_x -= face_w-180
face_y += face_h-250
face_w *= 1
face_h *= 1
hatImg = hatImg.resize((face_w, face_h))
bg = (face_x, face_y - face_h + 100 , face_x + face_w, face_y + 100 )
personImg.paste(hatImg, bg, mask = hatImg)#将调整好的帽子贴上去
personImg.save('addHat.png')
import PySimpleGUI as sg
import os.path
sg.change_look_and_feel("BrightColors")
file_list_column = [
[sg.Submit('Go',tooltip='按下面的要素添加圣诞帽',size=(15, 1)), sg.Cancel(size=(15, 1))],
[
sg.Text("图片位置"),
sg.In(size=(25, 1), enable_events=True, key="-FOLDER-"),
sg.FolderBrowse('浏览'),
],
[
sg.Text("帽子宽度"),
sg.In(size=(25, 1), enable_events=True, key="hat-w"),
],
[
sg.Text("帽子高度"),
sg.In(size=(25, 1), enable_events=True, key="hat-h"),
],
[
sg.Text("帽子横移"),
sg.In(size=(25, 1), enable_events=True, key="hat-x"),
],
[
sg.Text("帽子纵移"),
sg.In(size=(25, 1), enable_events=True, key="hat-y"),
],
[
sg.Listbox(
values=[], enable_events=True, size=(40, 20), key="-FILE LIST-"
)
],
]
image_viewer_column = [
[sg.Text("从左边图片列表中选择一张图片:",size=(60, 1),key = "notice")],
[sg.Text("左边的四个参数调节是在上面的参数基础上进行加减乘除;其中宽度和高度调试单位为个位数(需要大于0且是整数),横纵移动调试单位可任意调",size=(50, 3), key="-TOUT-")],
[sg.Image(key="-IMAGE-")],
]
layout = [
[
sg.Column(file_list_column),
sg.VSeperator(),
sg.Column(image_viewer_column),
]
]
window = sg.Window("圣诞帽添加软件", layout)
while True:
event, values = window.read()
if event == "Cancel" or event == sg.WIN_CLOSED:
break
if event == "-FOLDER-":
folder = values["-FOLDER-"]
try:
file_list = os.listdir(folder)
except:
file_list = []
fnames = [
f
for f in file_list
if os.path.isfile(os.path.join(folder, f))
and f.lower().endswith((".jpg", ".png"))
]
window["-FILE LIST-"].update(fnames)
elif event == "-FILE LIST-":
try:
filename = os.path.join(
values["-FOLDER-"], values["-FILE LIST-"][0]
)
window["-TOUT-"].update(filename)
except:
pass
elif event== "Go" :
personPath = filename
'''
圣诞帽添加部分
'''
window["notice"].update()
window["-IMAGE-"].update(filename='addHat.png')
window.close()
Import Create some widgets Create the window Create the event loop
文本框没有输入任何东西, 文本框输入的东西。如果是前者,我们直接调动添加圣诞帽的程序(默认参数)并且在图片上方显示 4 个参数(x,y,w,h),即坐标和帽子大小。
pip install pyinstaller
pyinstaller hat.py
☞计算机巨星陨落!图灵奖得主 Edmund Clarke 因感染“新冠”逝世
☞Github 超 20000 Star,最火开源视频库 FFmpeg 这 20 年!