python调用百度ai对颜值评分(代码片段)

阿黎逸阳 阿黎逸阳     2023-02-17     515

关键词:

上一篇文章介绍了应用百度AI的文字识别功能对身份证进行识别。本文介绍应用百度AI的人脸识别功能对年龄、性别、颜值等进行识别,感兴趣的朋友一起来看看效果吧。由于安装baidu-aip模块和获取百度AI接口密钥在之前的文章(百度AI文字识别—以营业执照为例)中已经进行阐述,本文不再赘述。

  

  

一、应用百度AI实现颜值评价效果

  
在正式进入代码讲解之前,先来看下本文的实现效果。为了效果更真实,采用了我本人的照片,颜值评分大家不要过多关注图片。

对该视频中的颜值评价感兴趣的朋友,可以看本文的后续实现代码。

  
  

二、调用百度接口进行人脸属性识别

  
安装好baidu-aip模块,获取了百度AI接口密钥后,即可调用百度接口进行人脸属性识别了。首先以杨紫的图片为例进行年龄、性别、颜值的识别。


  
具体python代码如下:‍

import os
import base64
from aip import AipFace


os.chdir(r'F:\\公众号\\28.人脸识别')
#设置图片存放的路径

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')
#定义读取图片的函数


APP_ID = 'XXX'
API_KEY = 'XXXXXXXX'
SECRET_KEY = 'XXXXXXXXXXXX'
#百度账号和密钥


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中的内容应该替换成你存储图片的地址,APP_ID、API_KEY、SECRET_KEY应该替换成第二章末尾你获取的百度密钥。

得到结果如下:


  
其中,age对应的值为年龄,gender对应的值为性别,beauty对应的值为颜值分。为进一步规范输出成标准格式,通过如下代码进行规范化:

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']] )

得到结果如下:

可以发现杨紫的颜值得分还是很高的图片,后续文章也会对其它一些明星进行测试。

  
  

三、根据年龄和性别对颜值进行评价

  
根据性别和颜值分,对识别结果进行评价,具体代码如下:

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("小姐姐先天不够,后天来凑")
    else:
        print("小哥哥先天不够,后天来凑") 
else:
    if face_character['gender'][0] == 'female':
        print("小姐姐洗洗睡吧")
    else:
        print("小哥哥洗洗睡吧")

  
得到结果:

  
  

四、批量识别人脸属性

  
假设文件夹中有数张人脸图片,想批量对这批图片进行颜值打分,可执行如下代码:

import os
import re
import time
import base64
from aip import AipFace


os.chdir(r'F:\\公众号\\28.人脸识别')
#设置图片存放的路径

pictureName = '6_brzp.jpg'
def get_picture_content(pictureName):
    with open(pictureName, 'rb') as fp:
        content = base64.b64encode(fp.read())
        return content.decode()
#定义读取图片的函数

APP_ID = 'XXX'
API_KEY = 'XXXXXXXX'
SECRET_KEY = 'XXXXXXXXXXXX'
#百度账号和密钥


options = 
imageType = 'BASE64'
options["face_field"] = "beauty"
options["max_face_num"] = 2
aipFace = AipFace(APP_ID, API_KEY, SECRET_KEY)

root_path = r'F:\\公众号\\28.人脸识别'
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] + ' 评分为:' + str(result['result']['face_list'][0]['beauty']))
#显示出所有图片的颜值得分

得到结果:

可以发现杨紫的那张照片颜值分很高,有八十几分。为了更好的用户体验,我们设置一个窗口,显示评价照片并语音播报颜值得分。

  
  

五、自定义窗口语音播报颜值得分

  
为了更清晰地评价人的颜值,把图片和结果用tkinter库和语音播放库包装起来,效果会更好。具体代码如下:

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 = '请选择图片存放的文件夹')  
picturePath = filedialog.askopenfilename(title = '请选择要进行颜值评价的图片')
root.destroy()
os.chdir(Folderpath)
#设置图片存放的路径

def get_picture_content(picturePath):
    with open(picturePath, 'rb') as fp:
        content = base64.b64encode(fp.read())
        return content.decode()
#定义读取图片的函数

APP_ID = 'XXX'
API_KEY = 'XXXXXXXX'
SECRET_KEY = 'XXXXXXXXXXXX'
#百度账号和密钥


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) + ",先天不够,后天来凑"+ ',最终颜值得分为:'+str(beauty)
    else:
        str_list = "小哥哥贵庚:"+ str(age) + ",先天不够,后天来凑" + ',最终颜值得分为:'+str(beauty)
else:
    if face_character['gender'][0] == 'female':
        str_list = "小姐姐芳龄:"+ str(age) + ",早点洗洗睡吧"+ ',最终颜值得分为:'+str(beauty)
    else:
        str_list = "小哥哥贵庚:"+ str(age) + ",早点洗洗睡吧"+ ',最终颜值得分为:'+str(beauty)
#颜值定义

from tkinter import *
from PIL import Image, ImageTk
from win32com.client import Dispatch
#导入包


speaker = Dispatch("SAPI.SpVoice")
def roll_call():
    speaker.Speak(str_list)
#控制播放语音


os.chdir(Folderpath)
#设置文件路径

root = Tk()
root.title("颜值测试小程序")
root.iconbitmap("pikaqiu2.ico")
#设置窗口

image = Image.open(picturePath)
#加载图片

root.geometry("400x300")
#根据图片大小设置窗口大小

img_pic = ImageTk.PhotoImage(image)
label = Label(root, image=img_pic)
label.pack()

b2 = tk.Button(root, bg='lightyellow', text='颜值评价', font=("KaiTi", 8), width=8, height=2, command=roll_call)
b2.place(x=0, y=0)

root.mainloop()

注: 如需本文直接可执行的代码和图片(明星图),请到公众号中回复”颜值识别“即可免费获取。
  
该程序得到结果即为第一章节的效果视频。
  
  

六、明星颜值评价

  
最后我们来看下明星的颜值评分吧。

  

1 刘亦菲


  
颜值评价结果:

'小姐姐芳龄:21,颜值尚可,最终颜值得分为:64.19'

对于这个结果,我也比较吃惊,所以颜值得分大家当成娱乐就好图片。
  

2 贾玲


  
颜值评价结果:

'小姐姐芳龄:37,先天不够,后天来凑,最终颜值得分为:30.67'

颜值得分仅供参考,请勿当真。我的有些照片测出来也是三十多分,可能跟背景、光线、表情都有一定的关系,大家当成娱乐就好。
  

3 肖战


  
颜值评价结果:

'小哥哥贵庚:23,颜值尚可,最终颜值得分为:63.9'

颜值得分仅供参考,请勿当真图片,认为我的代码有问题的可以自行下载图片和代码进行尝试。
  

4 宋小宝


  
颜值评价结果:

'小哥哥贵庚:40,先天不够,后天来凑,最终颜值得分为:45.18'

颜值得分仅供参考,请勿当真。从上面的颜值得分可以发现,普遍颜值得分较低,八十多分的已经算高分了,也算是为杨紫的颜值正名了吧。至此,调用百度接口颜值识别已讲解完毕,感兴趣的朋友自己实现一遍吧。
  
参考文献
https://www.jb51.net/article/173228.htm
https://www.cnblogs.com/pywjh/p/9527828.html
https://blog.csdn.net/zhyl4669/article/details/88947571
https://blog.csdn.net/weixin_29501693/article/details/112828210
  
你可能感兴趣:
用Python绘制皮卡丘
用Python绘制词云图
Python人脸识别—我的眼里只有你
Python画好看的星空图(唯美的背景)
【Python】情人节表白烟花(带声音和文字)
用Python中的py2neo库操作neo4j,搭建关联图谱
Python浪漫表白源码合集(爱心、玫瑰花、照片墙、星空下的告白)

长按(扫一扫)识别上方二维码学习更多Python和建模知识,让你的学习和工作更出彩。

基于百度ai开放平台的人脸识别及语音合成(代码片段)

...片,后台使用Java技术接收图片,然后对图片进行解码,调用云平台接口识别人脸特征,接收平台返回的人员年龄、性别、颜值等信息,将信息返回到Web界面进行显示。(2)人脸比对在Web界面上传两张人的照片,后台使用Java技术... 查看详情

方言对颜值的影响究竟有多大?|每日趣闻

戳一戳小程序查看更多!往期趣闻☞学废了......又一个面试小技巧|每日趣闻☞666!一辈子的学习计划安排的明明白白!|每日趣闻☞简历能有多有趣?就喜欢看这种简历|每日趣闻☞怎么请假显智商高?评论区... 查看详情

python丨调用百度的人脸识别api给你的颜值打个分

需要用到的工具百度的人脸识别apiFlaskPILrequests主要思路利用的百度的人脸识别库,然后自己做了一个简单的图片上传和图片处理以及信息提取加工。官网给的方法相对比较繁琐,我使用request改写了一下如下(注意把url里面的Key换... 查看详情

python实现人脸识别(代码片段)

文章目录叨叨几句准备工作代码流程叨叨几句哈喽兄弟们,今天实现一下人脸识别。先问大家一个问题什么是百度Aip模块?百度AI平台提供了很多的API接口供开发者快速的调用运用在项目中本文写的是使用百度AI的在线接... 查看详情

基于python的百度ai人脸识别api接口(可用于opencv-python人脸识别)(代码片段)

基于Python的百度AI人脸识别API接口(可用于OpenCV-Python人脸识别)资源:https://download.csdn.net/download/weixin_53403301/43644312之前的项目:【最新】基于OpenCV的Python人脸识别、检测、框选(遍历目录下所有照片依次识别... 查看详情

调用百度ai接口实现图片文字识别技术demo(代码片段)

一、第一步,到https://console.bce.baidu.com/二、创建应用三、pom.xml里面加入依赖org.jsonjson20160810<!--https://mvnrepository.com/artifact/log4j/log4j--><dependency><groupId>log4j</groupId>&l 查看详情

如何用python调用百度语音识别

...,查看音频c的属性,可以看到音频持续28秒,这样就是用python调用百度语音识别成功解决问题。参考技术A1、首先准备可供测试的音频,百度搜索“百度语音识别-开发文档”。2、从上图网页把音频下载到本地的桌面的文件夹a里... 查看详情

调用百度api实现人像动漫化(c++)(代码片段)

作者:Steven版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处准备工作    1)登录网站:人像动漫化-百度AI开放平台 。登录百度AI平台。图1 登录百度AI平台    2&#x... 查看详情

肖战真的没我帅!我自己写的python颜值检测说的!(代码片段)

...#xff0c;今天我们就来自己写一个玩玩。环境搭建所需工具**Python版本:**3.5.4(64bit)相关模块:opencv_python模块、sklearn模块、numpy模块、dlib模块以及一些Python自带的模块。实现思路(1)模型训练(2)提取人脸关... 查看详情

肖战真的没我帅!我自己写的python颜值检测说的!(代码片段)

...#xff0c;今天我们就来自己写一个玩玩。环境搭建所需工具**Python版本:**3.5.4(64bit)相关模块:opencv_python模块、sklearn模块、numpy模块、dlib模块以及一些Python自带的模块。实现思路(1)模型训练(2)提取人脸关... 查看详情

利用python写一个颜值测试小工具(代码片段)

...现在有一些利用照片来测试颜值的网站或软件,其实使用Python就可以实现这一功能,本文我们使用Python来写一个颜值测试小工具。很多人学习python,不知道从何学起。很多人学习python,掌握了基本语法过后,不知道在哪里寻找案... 查看详情

使用开源人脸特征提取器进行脸部颜值评分

...,故仅为实验。使用环境:ubuntu14.04,opencv3.2.0,dlib19.6,python2.7一、准备工作:1、下载dlib库,下载特征提取模型。该模型的作用是通过卷积神经网络产生128维的特征向量,用以代表这张脸。网络输入参数为人脸landm 查看详情

python评分功能(代码片段)

查看详情

调用百度ai实现人像分割(下)(代码片段)

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 前言-床长人工智能教程一、原始视频截图importcv2cap=cv2.VideoCapture(r"【小仙若】shakeit!冬日也... 查看详情

图片卡通化(代码片段)

用Python调用百度API的方式实现图片的卡通化第一步,在百度AI平台https://ai.baidu.com/创建应用。路径如下图所示:创建应用后的效果如下:第二步,编码实现:importbase64importrequestsdefget_access_token():#获取token的APIurl... 查看详情

python弹球评分用于概率预测(代码片段)

查看详情

抽根烟的功夫!用python做个颜值测试脚本(代码片段)

先做个介绍1、vimmy_introduce2.py编辑内容:#!/usr/bin/envpython#str,字符串name="frindsofthewind"#int,整数age=29#是,布尔类型gender=True#Float,浮点数height=1.82#int,整数weight=79print(name)print 查看详情

一四三人脸识别颜值自动点赞关注(代码片段)

...章目录脚本功能获取video当前播放帧图片将图片传到后台调用百度人脸识别接口拿到识别结果处理逻辑效果展示问题记录脚本功能通过获取video当前播放帧图片,截图调用后台接口,再调用百度人脸识别拿到人脸信息(... 查看详情