首先需要在百度AI平台注册账号并创建一个人脸识别应用,并获取到你的AppID、API Key和Secret Key。
然后,安装Python SDK并导入必要的库:
from aip import AipFace
import base64
import cv2
import numpy as np
接着,初始化AipFace客户端:
# 百度AI平台的AppID、API Key、Secret Key
APP_ID = 'Your AppID'
API_KEY = 'Your API Key'
SECRET_KEY = 'Your Secret Key'
# 初始化AipFace客户端
client = AipFace(APP_ID, API_KEY, SECRET_KEY)
然后,定义一个函数来进行人脸检测和人脸识别:
def face_recognition(image_path):
# 读取图片
with open(image_path, 'rb') as f:
image = f.read()
# 将图片进行base64编码
base64_image = base64.b64encode(image).decode('utf-8')
# 进行人脸检测
face_detection_options = {
'max_face_num': 1,
'face_fields': 'gender,age'
}
result = client.detect(base64_image, 'BASE64', face_detection_options)
if 'error_code' in result:
print('人脸检测失败:' + result['error_msg'])
return None
# 获取年龄、性别信息
age = result['result'][0]['age']
gender = result['result'][0]['gender']['type']
# 进行人脸识别
face_identify_options = {
'user_top_num': 1
}
result = client.identifyUser('Your Group ID', base64_image, 'BASE64', face_identify_options)
if 'error_code' in result:
print('人脸识别失败:' + result['error_msg'])
return None
# 获取用户ID和相似度
user_id = result['result'][0]['user_info']
score = result['result'][0]['scores'][0]
return {'age': age, 'gender': gender, 'user_id': user_id, 'score': score}
其中image_path是待识别图片的路径,Group ID是你在百度AI平台创建的人脸库的ID。
最后,可以使用OpenCV库来读取摄像头的视频流并进行实时人脸识别:
# 摄像头编号,如果只有一个摄像头则为0
camera_id = 0
# 打开摄像头
cap = cv2.VideoCapture(camera_id)
# 开始实时人脸识别
while True:
ret, frame = cap.read()
if not ret:
break
# 调用face_recognition函数进行人脸识别
result = face_recognition(frame)
# 在图像上绘制年龄、性别、用户ID和相似度信息
if result is not None:
age = 'Age: ' + str(result['age'])
gender = 'Gender: ' + result['gender']
user_id = 'User ID: ' + result['user_id']
score = 'Similarity: %.2f' % result['score']
cv2.putText(frame, age, (20, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
cv2.putText(frame, gender, (20, 80), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
cv2.putText(frame, user_id, (20, 120), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
cv2.putText(frame, score, (20, 160), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
# 显示图像
cv2.imshow('Face Recognition', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放摄像头并关闭窗口
cap.release()
cv2.destroyAllWindows()
这个代码实现了一个基本的人脸识别程序,可以通过摄像头读取实时视频流进行人脸识别。如果你想进一步定制和改进,你可以添加更多的功能,比如对识别的人脸进行跟踪、记录人脸识别日志等。