人臉識別男神女神顏值打分
- 需要用到的安裝包
需提前安裝的包
```python
pip install pillow
pip install baidu-aip
pip install tkinter
```
-
具體操作
現如今國內有很多有關人工智能,大數據有關方面的研究,阿里,百度,騰訊,科大訊飛等大公司都已經在這方面做的很好,我們就可以直接利用這些公司開發的AI直接來使用,這里用的是百度的百度大腦官方平台,其他公司的可憑個人喜好自選。
1、百度搜索百度大腦,找到里面的開放功能
2、打開人臉與人體識別然后點擊人臉識別
3、點擊立即使用然后登錄
4、點擊創建應用,創建完成后可查看ID,key,secret
5、打開技術文檔,選擇左側的SDK文檔下面的REST API SDK然后選擇python sdk
6、看文本,代碼小度都給你寫好了,我們可以直接使用
7、要自己上傳照片,然后打開運行
-
源代碼
#!/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 import random # 配置百度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 = random.randint(90, 100) 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) # 開啟循環 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()