使用python實現(xiàn)男神女神顏值打分系統(tǒng)(推薦)
先給大家展示效果圖,感覺不錯,請參考實現(xiàn)代碼。


具體代碼如下所示:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
pip install pillow
pip install baidu-aip
pip install tkinter
"""
import PIL
import time
import base64
import tkinter as tk
from PIL import Image
from PIL import ImageTk
from aip import AipFace
from tkinter.filedialog import askopenfilename
# 配置百度aip參數(shù)
APP_ID = '15768642'
API_KEY = 'xhiiGmGPRCRj10XIqVlVeCky'
SECRET_KEY = 'ZDMMAO7StwTKzW8BspVQxvoGtdgSW4yI'
a_face = AipFace(APP_ID, API_KEY, SECRET_KEY)
image_type = 'BASE64'
options = {'face_field': 'age,gender,beauty'}
def get_file_content(file_path):
"""獲取文件內(nèi)容"""
with open(file_path, 'rb') as fr:
content = base64.b64encode(fr.read())
return content.decode('utf8')
def face_score(file_path):
"""臉部識別分?jǐn)?shù)"""
result = a_face.detect(get_file_content(file_path), image_type, options)
print(result)
age = result['result']['face_list'][0]['age']
beauty = result['result']['face_list'][0]['beauty']
gender = result['result']['face_list'][0]['gender']['type']
return age, beauty, gender
class ScoreSystem():
"""打分系統(tǒng)類"""
root = tk.Tk()
# 修改程序框的大小
root.geometry('800x500')
# 添加程序框標(biāo)題
root.title('女神/男神顏值打分系統(tǒng)')
# 修改背景色
canvas = tk.Canvas(root,
width=800, # 指定Canvas組件的寬度
height=500, # 指定Canvas組件的高度
bg='#E6E6FA') # 指定Canvas組件的背景色
canvas.pack()
def start_interface(self):
"""主運行函數(shù)"""
self.title()
self.time_component()
# 打開本地文件
tk.Button(self.root, text='打開文件', command=self.show_original_pic).place(x=50, y=150)
# 進(jìn)行顏值評分
tk.Button(self.root, text='運行程序', command=self.open_files2).place(x=50, y=230)
# 顯示幫助文檔
tk.Button(self.root, text='幫助文檔', command=self.show_help).place(x=50, y=310)
# 退出系統(tǒng)
tk.Button(self.root, text='退出軟件', command=self.quit).place(x=50, y=390)
# 顯示圖框標(biāo)題
tk.Label(self.root, text='原圖', font=10).place(x=380, y=120)
# 修改圖片大小
self.label_img_original = tk.Label(self.root)
# 設(shè)置顯示圖框背景
self.cv_orinial = tk.Canvas(self.root, bg='white', width=270, height=270)
# 設(shè)置顯示圖框邊框
self.cv_orinial.create_rectangle(8, 8, 260, 260, width=1, outline='red')
# 設(shè)置位置
self.cv_orinial.place(x=265, y=150)
# 顯示圖片位置
self.label_img_original.place(x=265, y=150)
# 設(shè)置評分標(biāo)簽
tk.Label(self.root, text='性別', font=10).place(x=680, y=150)
self.text1 = tk.Text(self.root, width=10, height=2)
tk.Label(self.root, text='年齡', font=10).place(x=680, y=250)
self.text2 = tk.Text(self.root, width=10, height=2)
tk.Label(self.root, text='評分', font=10).place(x=680, y=350)
self.text3 = tk.Text(self.root, width=10, height=2)
# 填裝文字
self.text1.place(x=680, y=175)
self.text2.place(x=680, y=285)
self.text3.place(x=680, y=385)
# 開啟循環(huán)
self.root.mainloop()
def show_original_pic(self):
"""放入文件"""
self.path_ = askopenfilename(title='選擇文件')
# 處理文件
img = Image.open(fr'{self.path_}')
img = img.resize((270, 270), PIL.Image.ANTIALIAS) # 調(diào)整圖片大小至270*270
# 生成tkinter圖片對象
img_png_original = ImageTk.PhotoImage(img)
# 設(shè)置圖片對象
self.label_img_original.config(image=img_png_original)
self.label_img_original.image = img_png_original
self.cv_orinial.create_image(5, 5, anchor='nw', image=img_png_original)
def open_files2(self):
# 獲取百度API接口獲得的年齡、分?jǐn)?shù)、性別
age, score, gender = face_score(self.path_)
# 清楚text文本框內(nèi)容并進(jìn)行插入
self.text1.delete(1.0, tk.END)
self.text1.tag_config('red', foreground='RED')
self.text1.insert(tk.END, gender, 'red')
self.text2.delete(1.0, tk.END)
self.text2.tag_config('red', foreground='RED')
self.text2.insert(tk.END, age, 'red')
self.text3.delete(1.0, tk.END)
self.text3.tag_config('red', foreground='RED')
self.text3.insert(tk.END, score, 'red')
def show_help(self):
"""顯示幫助"""
pass
def quit(self):
"""退出"""
self.root.quit()
def get_time(self, lb):
"""獲取時間"""
time_str = time.strftime("%Y-%m-%d %H:%M:%S") # 獲取當(dāng)前的時間并轉(zhuǎn)化為字符串
lb.configure(text=time_str) # 重新設(shè)置標(biāo)簽文本
self.root.after(1000, self.get_time, lb) # 每隔1s調(diào)用函數(shù) get_time自身獲取時間
def time_component(self):
"""時間組件"""
lb = tk.Label(self.root, text='', fg='blue', font=("黑體", 15))
lb.place(relx=0.75, rely=0.90)
self.get_time(lb)
def title(self):
"""標(biāo)題設(shè)計"""
lb = tk.Label(self.root, text='女神/男神顏值打分系統(tǒng)',
bg='#6495ED',
fg='lightpink', font=('華文新魏', 32),
width=20,
height=2,
# relief=tk.SUNKEN
)
lb.place(x=200, y=10)
score_system = ScoreSystem()
score_system.start_interface()
總結(jié)
以上所述是小編給大家介紹的使用python實現(xiàn)男神女神顏值打分系統(tǒng),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
python作圖基礎(chǔ)之plt.contour實例詳解
contour和contourf都是畫三維等高線圖的,下面這篇文章主要給大家介紹了關(guān)于python作圖基礎(chǔ)操作之plt.contour的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
使用Python下載歌詞并嵌入歌曲文件中的實現(xiàn)代碼
這篇文章主要介紹了使用Python下載歌詞并嵌入歌曲文件中的實現(xiàn)代碼,需要借助eyed3模塊,需要的朋友可以參考下2015-11-11
關(guān)于使用python對mongo多線程更新數(shù)據(jù)
這篇文章主要介紹了關(guān)于使用python對mongo多線程更新數(shù)據(jù),文中提供了詳細(xì)的代碼說明,實際使用時,需要根據(jù)具體情況進(jìn)行調(diào)整和優(yōu)化,需要的朋友可以參考下2023-04-04
pycharm創(chuàng)建一個python包方法圖解
在本篇文章中小編給大家分享了關(guān)于pycharm怎么創(chuàng)建一個python包的相關(guān)知識點,需要的朋友們學(xué)習(xí)下。2019-04-04
Python去除html標(biāo)簽的幾種方法總結(jié)
這篇文章主要介紹了Python去除html標(biāo)簽的幾種方法總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01
手把手教你如何使python變?yōu)榭蓤?zhí)行文件
對于exe可執(zhí)行文件,相信大家都不陌生,下面這篇文章主要給大家介紹了關(guān)于如何使python變?yōu)榭蓤?zhí)行文件的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02

