Python調(diào)用百度AI實(shí)現(xiàn)顏值評(píng)分功能
一、調(diào)用百度接口進(jìn)行人臉屬性識(shí)別
安裝好baidu-aip模塊,獲取了百度AI接口密鑰后,即可調(diào)用百度接口進(jìn)行人臉屬性識(shí)別了。首先以楊紫的圖片為例進(jìn)行年齡、性別、顏值的識(shí)別。
具體python代碼如下:?
import os import base64 from aip import AipFace os.chdir(r'F:\公眾號(hào)\28.人臉識(shí)別') #設(shè)置圖片存放的路徑 pictureName = '1_yz.jpg' def get_picture_content(pictureName): with open(pictureName, 'rb') as fp: content = base64.b64encode(fp.read()) return content.decode('utf-8') #定義讀取圖片的函數(shù) APP_ID = 'XXX' API_KEY = 'XXXXXXXX' SECRET_KEY = 'XXXXXXXXXXXX' #百度賬號(hào)和密鑰 options = {} imageType = 'BASE64' options["face_field"] = "age, gender, beauty" aipFace = AipFace(APP_ID, API_KEY, SECRET_KEY) result = aipFace.detect(get_picture_content(pictureName), imageType, options) print(result)
注: 其中os.chdir中的內(nèi)容應(yīng)該替換成你存儲(chǔ)圖片的地址,APP_ID、API_KEY、SECRET_KEY應(yīng)該替換成你獲取的百度密鑰。
得到結(jié)果如下:
其中,age對(duì)應(yīng)的值為年齡,gender對(duì)應(yīng)的值為性別,beauty對(duì)應(yīng)的值為顏值分。為進(jìn)一步規(guī)范輸出成標(biāo)準(zhǔn)格式,通過(guò)如下代碼進(jìn)行規(guī)范化:
import pandas as pd face_character = pd.DataFrame({"age":[result['result']['face_list'][0]['age']], "gender":[result['result']['face_list'][0]['gender']['type']], "beauty":[result['result']['face_list'][0]['beauty']] })
得到結(jié)果如下:
可以發(fā)現(xiàn)楊紫的顏值得分還是很高的圖片,后續(xù)文章也會(huì)對(duì)其它一些明星進(jìn)行測(cè)試。
二、根據(jù)年齡和性別對(duì)顏值進(jìn)行評(píng)價(jià)
根據(jù)性別和顏值分,對(duì)識(shí)別結(jié)果進(jìn)行評(píng)價(jià),具體代碼如下:
if face_character['beauty'][0]>80: if face_character['gender'][0] == 'female': print("小姐姐顏值爆表") else: print("小哥哥顏值爆表") elif face_character['beauty'][0]>70: if face_character['gender'][0] == 'female': print("小姐姐天生美顏") else: print("小哥哥天生美顏") elif face_character['beauty'][0]>60: if face_character['gender'][0] == 'female': print("小姐姐顏值尚可") else: print("小哥哥顏值尚可") elif face_character['beauty'][0]>40: if face_character['gender'][0] == 'female': print("小姐姐先天不夠,后天來(lái)湊") else: print("小哥哥先天不夠,后天來(lái)湊") else: if face_character['gender'][0] == 'female': print("小姐姐洗洗睡吧") else: print("小哥哥洗洗睡吧")
得到結(jié)果:
三、批量識(shí)別人臉屬性
假設(shè)文件夾中有數(shù)張人臉圖片,想批量對(duì)這批圖片進(jìn)行顏值打分,可執(zhí)行如下代碼:
import os import re import time import base64 from aip import AipFace os.chdir(r'F:\公眾號(hào)\28.人臉識(shí)別') #設(shè)置圖片存放的路徑 pictureName = '6_brzp.jpg' def get_picture_content(pictureName): with open(pictureName, 'rb') as fp: content = base64.b64encode(fp.read()) return content.decode() #定義讀取圖片的函數(shù) APP_ID = 'XXX' API_KEY = 'XXXXXXXX' SECRET_KEY = 'XXXXXXXXXXXX' #百度賬號(hào)和密鑰 options = {} imageType = 'BASE64' options["face_field"] = "beauty" options["max_face_num"] = 2 aipFace = AipFace(APP_ID, API_KEY, SECRET_KEY) root_path = r'F:\公眾號(hào)\28.人臉識(shí)別' list = os.listdir(root_path) # 列出文件夾下所有的目錄與文件 for i in range(0, len(list)): time.sleep(1) path = os.path.join(root_path, list[i]) if os.path.isfile(path): result = aipFace.detect(get_picture_content(path), imageType, options) print(list[i] + ' 評(píng)分為:' + str(result['result']['face_list'][0]['beauty'])) #顯示出所有圖片的顏值得分
得到結(jié)果:
可以發(fā)現(xiàn)楊紫的那張照片顏值分很高,有八十幾分。為了更好的用戶體驗(yàn),我們?cè)O(shè)置一個(gè)窗口,顯示評(píng)價(jià)照片并語(yǔ)音播報(bào)顏值得分。?
四、自定義窗口語(yǔ)音播報(bào)顏值得分
為了更清晰地評(píng)價(jià)人的顏值,把圖片和結(jié)果用tkinter庫(kù)和語(yǔ)音播放庫(kù)包裝起來(lái),效果會(huì)更好。具體代碼如下:
import os import re import time import base64 import pandas as pd import tkinter as tk from aip import AipFace from tkinter import filedialog root = tk.Tk() root.withdraw() Folderpath = filedialog.askdirectory(title = '請(qǐng)選擇圖片存放的文件夾') picturePath = filedialog.askopenfilename(title = '請(qǐng)選擇要進(jìn)行顏值評(píng)價(jià)的圖片') root.destroy() os.chdir(Folderpath) #設(shè)置圖片存放的路徑 def get_picture_content(picturePath): with open(picturePath, 'rb') as fp: content = base64.b64encode(fp.read()) return content.decode() #定義讀取圖片的函數(shù) APP_ID = 'XXX' API_KEY = 'XXXXXXXX' SECRET_KEY = 'XXXXXXXXXXXX' #百度賬號(hào)和密鑰 options = {} options["max_face_num"] = 2 options["face_field"] = "gender" aipFace = AipFace(APP_ID, API_KEY, SECRET_KEY) imageType = 'BASE64' result = aipFace.detect(get_picture_content(picturePath), imageType, options) gender = result['result']['face_list'][0]['gender']['type'] options["face_field"] = "age" time.sleep(1) result = aipFace.detect(get_picture_content(picturePath), imageType, options) age = result['result']['face_list'][0]['age'] options["face_field"] = "beauty" time.sleep(2) result = aipFace.detect(get_picture_content(picturePath), imageType, options) beauty = result['result']['face_list'][0]['beauty'] #獲取年齡、性別、顏值信息 face_character = pd.DataFrame({"age":age, "gender":gender, "beauty":beauty},index = ['value']) if face_character['beauty'][0]>80: if face_character['gender'][0] == 'female': str_list = "小姐姐芳齡:"+ str(age) + ",顏值爆表"+ ',最終顏值得分為:'+str(beauty) else: str_list = "小哥哥貴庚:"+ str(age) + ",顏值爆表"+ ',最終顏值得分為:'+str(beauty) elif face_character['beauty'][0]>70: if face_character['gender'][0] == 'female': str_list = "小姐姐芳齡:"+ str(age) + ",天生美顏"+ ',最終顏值得分為:'+str(beauty) else: str_list = "小哥哥貴庚:"+ str(age) + ",天生美顏"+ ',最終顏值得分為:'+str(beauty) elif face_character['beauty'][0]>50: if face_character['gender'][0] == 'female': str_list = "小姐姐芳齡:"+ str(age) + ",顏值尚可"+ ',最終顏值得分為:'+str(beauty) else: str_list = "小哥哥貴庚:"+ str(age) + ",顏值尚可"+ ',最終顏值得分為:'+str(beauty) elif face_character['beauty'][0]>30: if face_character['gender'][0] == 'female': str_list = "小姐姐芳齡:"+ str(age) + ",先天不夠,后天來(lái)湊"+ ',最終顏值得分為:'+str(beauty) else: str_list = "小哥哥貴庚:"+ str(age) + ",先天不夠,后天來(lái)湊" + ',最終顏值得分為:'+str(beauty) else: if face_character['gender'][0] == 'female': str_list = "小姐姐芳齡:"+ str(age) + ",早點(diǎn)洗洗睡吧"+ ',最終顏值得分為:'+str(beauty) else: str_list = "小哥哥貴庚:"+ str(age) + ",早點(diǎn)洗洗睡吧"+ ',最終顏值得分為:'+str(beauty) #顏值定義 from tkinter import * from PIL import Image, ImageTk from win32com.client import Dispatch #導(dǎo)入包 speaker = Dispatch("SAPI.SpVoice") def roll_call(): speaker.Speak(str_list) #控制播放語(yǔ)音 os.chdir(Folderpath) #設(shè)置文件路徑 root = Tk() root.title("顏值測(cè)試小程序") root.iconbitmap("pikaqiu2.ico") #設(shè)置窗口 image = Image.open(picturePath) #加載圖片 root.geometry("400x300") #根據(jù)圖片大小設(shè)置窗口大小 img_pic = ImageTk.PhotoImage(image) label = Label(root, image=img_pic) label.pack() b2 = tk.Button(root, bg='lightyellow', text='顏值評(píng)價(jià)', font=("KaiTi", 8), width=8, height=2, command=roll_call) b2.place(x=0, y=0) root.mainloop()
五、明星顏值評(píng)價(jià)
最后我們來(lái)看下明星的顏值評(píng)分吧。
1 劉亦菲
顏值評(píng)價(jià)結(jié)果:
'小姐姐芳齡:21,顏值尚可,最終顏值得分為:64.19'
對(duì)于這個(gè)結(jié)果,我也比較吃驚,所以顏值得分大家當(dāng)成娛樂就好圖片。
2 賈玲
顏值評(píng)價(jià)結(jié)果:
'小姐姐芳齡:37,先天不夠,后天來(lái)湊,最終顏值得分為:30.67'
顏值得分僅供參考,請(qǐng)勿當(dāng)真。我的有些照片測(cè)出來(lái)也是三十多分,可能跟背景、光線、表情都有一定的關(guān)系,大家當(dāng)成娛樂就好。
3 肖戰(zhàn)
顏值評(píng)價(jià)結(jié)果:
'小哥哥貴庚:23,顏值尚可,最終顏值得分為:63.9'
顏值得分僅供參考,請(qǐng)勿當(dāng)真圖片,認(rèn)為我的代碼有問題的可以自行下載圖片和代碼進(jìn)行嘗試。
4 宋小寶
顏值評(píng)價(jià)結(jié)果:
'小哥哥貴庚:40,先天不夠,后天來(lái)湊,最終顏值得分為:45.18'
顏值得分僅供參考,請(qǐng)勿當(dāng)真。從上面的顏值得分可以發(fā)現(xiàn),普遍顏值得分較低,八十多分的已經(jīng)算高分了,也算是為楊紫的顏值正名了吧。至此,調(diào)用百度接口顏值識(shí)別已講解完畢,感興趣的朋友自己實(shí)現(xiàn)一遍吧。?
以上就是Python調(diào)用百度AI實(shí)現(xiàn)顏值評(píng)分功能的詳細(xì)內(nèi)容,更多關(guān)于Python 顏值評(píng)分的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python爬蟲入門案例之爬取去哪兒旅游景點(diǎn)攻略以及可視化分析
讀萬(wàn)卷書不如行萬(wàn)里路,學(xué)的扎不扎實(shí)要通過(guò)實(shí)戰(zhàn)才能看出來(lái),本篇文章手把手帶你爬取去哪兒平臺(tái)的旅游景點(diǎn)攻略并進(jìn)行可視化分析,大家可以在過(guò)程中查缺補(bǔ)漏,看看自己掌握程度怎么樣2021-10-10Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的畢業(yè)生信息管理系統(tǒng)的示例代碼
這篇文章主要介紹了Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的畢業(yè)生信息管理系統(tǒng)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06tensorflow2.0與tensorflow1.0的性能區(qū)別介紹
今天小編就為大家分享一篇tensorflow2.0與tensorflow1.0的性能區(qū)別介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02Python錯(cuò)誤提示:[Errno 24] Too many open files的分析與解決
這篇文章主要給大家介紹了Python中出現(xiàn)錯(cuò)誤提示:[Errno 24] Too many open files的分析與解決,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-02-02python用opencv完成圖像分割并進(jìn)行目標(biāo)物的提取
這篇文章主要介紹了python用opencv完成圖像分割并進(jìn)行目標(biāo)物的提取,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05pandas中遍歷dataframe的每一個(gè)元素的實(shí)現(xiàn)
這篇文章主要介紹了pandas中遍歷dataframe的每一個(gè)元素的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10