使用python实现简单的人脸识别,可以估算颜值嗷

举报
爱打瞌睡的CV君 发表于 2022/07/08 01:10:21 2022/07/08
【摘要】 人脸识别 文章目录 实现思路一、提供识别图片二、在百度AI创建一个人脸识别应用三、识别代码四、运行结果五、补充 实现思路 一、提供识别图片 我是把需要的图片放到了 D:...

人脸识别

实现思路

一、提供识别图片

我是把需要的图片放到了 D:/人脸识别 中,并且把图片命名为 0.jpg

识别图片如下:

在这里插入图片描述

二、在百度AI创建一个人脸识别应用

1、百度搜索,“百度AI”,进入官网,点击右上角控制台,扫码登录。
2、登录之后,找到人脸识别
在这里插入图片描述
3、创建应用,创建成功,点击管理应用,会得到三个值
在这里插入图片描述

三、识别代码

from aip import AipFace
from PIL import Image, ImageDraw, ImageFont
import base64
# 在百度AI里面新建的应用的 APP_ID API_KEY SECRET_KEY
APP_ID = '你的APP_ID值'
API_KEY = '你的API_KEY值'
SECRET_KEY = '你的SECRET_KEY值'
client = AipFace(APP_ID, API_KEY, SECRET_KEY)
# 调用人脸检测接口并进行人脸检测
image = str(base64.b64encode(open('D:/人脸识别/0.jpg', 'rb').read()), 'utf-8')
imageType = "BASE64"
options = dict()
options["face_field"] = "age,beauty,gender,expression,face_shape"  # 包括很多内容,例如这里的年龄,颜值,性别,表情
options["max_face_num"] = 1  # 最多可识别人脸数量,默认值为1,最大值为10
options["face_type"] = "LIVE"  # 人脸的类型,默认为“LIVE”,即生活照
options["liveness_control"] = "NONE"
a = client.detect(image, imageType, options)
# 输出检测结果
print('总共检测了', a['result']['face_num'], '个人脸')   # 这部分可以看一下官方文档的返回实例,就懂了
print('人物的年龄:', a['result']['face_list'][0]['age'])
print('人物的颜值:', a['result']['face_list'][0]['beauty'])
print('人物的表情:', a['result']['face_list'][0]['expression']['type'])
print('人物的性别:', a['result']['face_list'][0]['gender']['type'])
print('人物的脸型:', a['result']['face_list'][0]['face_shape']['type'])
# 打开检测的图像
im = Image.open("D:/人脸识别/0.jpg")  # image.open需要精确到图片的位置,而不是图片文件夹的位置
# 在图像上绘制信息,矩形,文本信息
my_draw = ImageDraw.Draw(im)
x1 = a['result']['face_list'][0]['location']['left']
y1 = a['result']['face_list'][0]['location']['top']
x2 = a['result']['face_list'][0]['location']['left']+a['result']['face_list'][0]['location']['width']
y2 = a['result']['face_list'][0]['location']['top']+a['result']['face_list'][0]['location']['height']
my_draw.rectangle([x1, y1, x2, y2], outline='blue', width=3)
# 在图像上输出文本
my_text = ImageFont.truetype('C:/Windows/Fonts/simfang.ttf', 25)  # 字体所在的文件路径(这里是仿宋),字体大小
text1 = '年龄:'+str(a['result']['face_list'][0]['age'])
my_draw.text((x2+180, y1), text1, fill='black', font=my_text)
text2 = '性别:'+str(a['result']['face_list'][0]['gender']['type'])
my_draw.text((x2+180, y1+120), text2, fill='black', font=my_text)
text3 = '脸型:'+a['result']['face_list'][0]['face_shape']['type']
my_draw.text((x2+180, y1+80), text3, fill='black', font=my_text)
text4 = '表情:'+str(a['result']['face_list'][0]['expression']['type'])
my_draw.text((x2+180, y1+160), text4, fill='black', font=my_text)
text5 = '颜值:'+str(a['result']['face_list'][0]['beauty'])
my_draw.text((x2+180, y1+40), text5, fill='black', font=my_text)
# 显示并保存结果
im.show()
im.save("D:/人脸识别/result.jpg")


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

更多详情可以参考官方文档官方文档传送门

四、运行结果

在这里插入图片描述

五、补充

1、本例中的识别每次只能识别一张人脸,即,一张图中有多张人脸时,只会识别一张。
2、颜值,表情的数据会随着照片的清晰度而发生变化,例如,同一个人,拍摄的角度和距离会影响这些数据。

文章来源: luckystar.blog.csdn.net,作者:爱打瞌睡的CV君,版权归原作者所有,如需转载,请联系作者。

原文链接:luckystar.blog.csdn.net/article/details/113977796

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。