使用python實現男神女神顏值打分系統(推薦)
更新時間:2019年10月31日 10:37:17 作者:Keegan-揚
這篇文章主要介紹了用python做一個男神女神顏值打分系統(程序分析見注釋),需要的朋友可以參考下
先給大家展示效果圖,感覺不錯,請參考實現代碼。


具體代碼如下所示:
#!/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參數
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):
"""獲取文件內容"""
with open(file_path, 'rb') as fr:
content = base64.b64encode(fr.read())
return content.decode('utf8')
def face_score(file_path):
"""臉部識別分數"""
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():
"""打分系統類"""
root = tk.Tk()
# 修改程序框的大小
root.geometry('800x500')
# 添加程序框標題
root.title('女神/男神顏值打分系統')
# 修改背景色
canvas = tk.Canvas(root,
width=800, # 指定Canvas組件的寬度
height=500, # 指定Canvas組件的高度
bg='#E6E6FA') # 指定Canvas組件的背景色
canvas.pack()
def start_interface(self):
"""主運行函數"""
self.title()
self.time_component()
# 打開本地文件
tk.Button(self.root, text='打開文件', command=self.show_original_pic).place(x=50, y=150)
# 進行顏值評分
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)
# 退出系統
tk.Button(self.root, text='退出軟件', command=self.quit).place(x=50, y=390)
# 顯示圖框標題
tk.Label(self.root, text='原圖', font=10).place(x=380, y=120)
# 修改圖片大小
self.label_img_original = tk.Label(self.root)
# 設置顯示圖框背景
self.cv_orinial = tk.Canvas(self.root, bg='white', width=270, height=270)
# 設置顯示圖框邊框
self.cv_orinial.create_rectangle(8, 8, 260, 260, width=1, outline='red')
# 設置位置
self.cv_orinial.place(x=265, y=150)
# 顯示圖片位置
self.label_img_original.place(x=265, y=150)
# 設置評分標簽
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) # 調整圖片大小至270*270
# 生成tkinter圖片對象
img_png_original = ImageTk.PhotoImage(img)
# 設置圖片對象
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接口獲得的年齡、分數、性別
age, score, gender = face_score(self.path_)
# 清楚text文本框內容并進行插入
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") # 獲取當前的時間并轉化為字符串
lb.configure(text=time_str) # 重新設置標簽文本
self.root.after(1000, self.get_time, lb) # 每隔1s調用函數 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):
"""標題設計"""
lb = tk.Label(self.root, text='女神/男神顏值打分系統',
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()
總結
以上所述是小編給大家介紹的使用python實現男神女神顏值打分系統,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
相關文章
pycharm創(chuàng)建一個python包方法圖解
在本篇文章中小編給大家分享了關于pycharm怎么創(chuàng)建一個python包的相關知識點,需要的朋友們學習下。2019-04-04
手把手教你如何使python變?yōu)榭蓤?zhí)行文件
對于exe可執(zhí)行文件,相信大家都不陌生,下面這篇文章主要給大家介紹了關于如何使python變?yōu)榭蓤?zhí)行文件的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2023-02-02

