使用python實(shí)現(xiàn)男神女神顏值打分系統(tǒng)(推薦)
先給大家展示效果圖,感覺不錯(cuò),請(qǐng)參考實(shí)現(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): """臉部識(shí)別分?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): """主運(yùn)行函數(shù)""" self.title() self.time_component() # 打開本地文件 tk.Button(self.root, text='打開文件', command=self.show_original_pic).place(x=50, y=150) # 進(jìn)行顏值評(píng)分 tk.Button(self.root, text='運(yùn)行程序', 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è)置評(píng)分標(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='評(píng)分', 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圖片對(duì)象 img_png_original = ImageTk.PhotoImage(img) # 設(shè)置圖片對(duì)象 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): """獲取時(shí)間""" time_str = time.strftime("%Y-%m-%d %H:%M:%S") # 獲取當(dāng)前的時(shí)間并轉(zhuǎn)化為字符串 lb.configure(text=time_str) # 重新設(shè)置標(biāo)簽文本 self.root.after(1000, self.get_time, lb) # 每隔1s調(diào)用函數(shù) get_time自身獲取時(shí)間 def time_component(self): """時(shí)間組件""" 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è)計(jì)""" 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實(shí)現(xiàn)男神女神顏值打分系統(tǒng),希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
python作圖基礎(chǔ)之plt.contour實(shí)例詳解
contour和contourf都是畫三維等高線圖的,下面這篇文章主要給大家介紹了關(guān)于python作圖基礎(chǔ)操作之plt.contour的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06使用Python下載歌詞并嵌入歌曲文件中的實(shí)現(xiàn)代碼
這篇文章主要介紹了使用Python下載歌詞并嵌入歌曲文件中的實(shí)現(xiàn)代碼,需要借助eyed3模塊,需要的朋友可以參考下2015-11-11Python qrcode 生成一個(gè)二維碼的實(shí)例詳解
在本篇文章里小編給大家整理的是關(guān)于Python qrcode 生成一個(gè)二維碼的實(shí)例內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。2020-02-02關(guān)于使用python對(duì)mongo多線程更新數(shù)據(jù)
這篇文章主要介紹了關(guān)于使用python對(duì)mongo多線程更新數(shù)據(jù),文中提供了詳細(xì)的代碼說明,實(shí)際使用時(shí),需要根據(jù)具體情況進(jìn)行調(diào)整和優(yōu)化,需要的朋友可以參考下2023-04-04pycharm創(chuàng)建一個(gè)python包方法圖解
在本篇文章中小編給大家分享了關(guān)于pycharm怎么創(chuàng)建一個(gè)python包的相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。2019-04-04對(duì)python讀取CT醫(yī)學(xué)圖像的實(shí)例詳解
今天小編就為大家分享一篇對(duì)python讀取CT醫(yī)學(xué)圖像的實(shí)例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01Python去除html標(biāo)簽的幾種方法總結(jié)
這篇文章主要介紹了Python去除html標(biāo)簽的幾種方法總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01手把手教你如何使python變?yōu)榭蓤?zhí)行文件
對(duì)于exe可執(zhí)行文件,相信大家都不陌生,下面這篇文章主要給大家介紹了關(guān)于如何使python變?yōu)榭蓤?zhí)行文件的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02