python实现简单的人脸识别案例

首先需要在百度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()

这个代码实现了一个基本的人脸识别程序,可以通过摄像头读取实时视频流进行人脸识别。如果你想进一步定制和改进,你可以添加更多的功能,比如对识别的人脸进行跟踪、记录人脸识别日志等。

你可能感兴趣的:(人工智能)