人臉識別男神女神顏值打分系統


人臉識別男神女神顏值打分

  • 需要用到的安裝包

​ 需提前安裝的包

   ```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()
    
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM