Pythonを使用して簡単な顔認識を実現し、顔の価値を推定できます

顔認識

実現のアイデア

1.身分証明書の写真を提供する

必要な画像をD:/顔認識に入れ、画像に0.jpgという名前を付けました

認識画像は以下の通りです。

ここに画像の説明を挿入します

2. BaiduAIで顔認識アプリケーションを作成します

1. Baidu検索「BaiduAI」、公式Webサイトに入り、右上隅のコンソールをクリックし、コードをスキャンしてログインします。
2.ログイン後、顔認識を見つけ
ここに画像の説明を挿入します
ます。3。アプリケーションを作成し、正常に作成し、[アプリケーションの管理]をクリックすると、3つの値が表示されます。
ここに画像の説明を挿入します

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")

詳細については、公式文書公式文書ポータルを参照してください。

4、実行中の結果

ここに画像の説明を挿入します

5、補足

1.この例の認識は、一度に1つの顔しか認識できません。つまり、画像に複数の顔がある場合、1つの顔しか認識できません。
2.顔の値と表情のデータは、写真の鮮明さによって変化します。たとえば、同じ人物の撮影の角度と距離は、これらのデータに影響します。

おすすめ

転載: blog.csdn.net/qq_44921056/article/details/113977796