Llame a la API de Baidu para realizar el reconocimiento facial

1. Código

from aip import AipFace
import cv2
import time
import base64
from PIL import Image
from io import BytesIO
import pyttsx3
# """ 你的 APPID AK SK """
APP_ID = '1965####'
API_KEY = 'YXL65ekIloykyjrT4kzc####'
SECRET_KEY = 'lFiapBoZ5eBwOFyxMbiwQDmClg1u####'

client = AipFace(APP_ID, API_KEY, SECRET_KEY)

# def frame2base64(frame):
#     img = Image.fromarray(frame) #将每一帧转为Image
#     output_buffer = BytesIO() #创建一个BytesIO
#     img.save(output_buffer, format='JPEG') #写入output_buffer
#     byte_data = output_buffer.getvalue() #在内存中读取
#     image = base64.b64encode(byte_data) #转为BASE64
#     return image #转码成功 返回base64编码

def generate():
    camera = cv2.VideoCapture(0)
    engine = pyttsx3.init()
    try:
        while True:
            engine = pyttsx3.init()
            ret, img = camera.read()
            cv2.imwrite("E://Ana/face.png",img)
            cv2.imshow("调用摄像头", img)
            imageType = "BASE64"
            groupIdList = "1,2,3,4"


            """ 如果有可选参数 """
            options = {}
            options["max_face_num"] = 4
            options["match_threshold"] = 70
            options["quality_control"] = "NORMAL"
            options["liveness_control"] = "NONE"
            # options["user_id"] = "233451"
            options["max_user_num"] = 4

#             """ 带参数调用人脸搜索 """
            with open("E://Ana/face.png", 'rb') as fp:
                imageB = base64.b64encode(fp.read())
            image = str(imageB, 'utf-8')
            """ 调用人脸搜索 """
            result = client.search(image, imageType, groupIdList, options)
            engine.runAndWait()
            print(2)
            if result:
                if not result['result']:
                    continue
                name = result['result']['user_list'][0]['user_id']#获取名字
                score = result['result']['user_list'][0]['score']#获取相似度
                if name == 'cgh_1':
                    if score>80:
                        print(score)
                        print(name)
                        engine.say("华来了")
                elif name == 'yjc_1':
                    if score > 80:
                        print(score)
                        print(name)
                        engine.say("杨来了")
                elif name == 'cjy_1':
                    if score > 80:
                        print(score)
                        print(name)
                        engine.say("言来了")
                elif name == 'hjy_1':
                    if score > 80:
                        print(score)
                        print(name)
                        engine.say("怡来了")
                else:
                    print("匹配失败")
            else:
                continue
    except Exception as e:
        print(e)
    finally:
        # 释放资源
        engine.runAndWait()
        camera.release()
        cv2.destroyAllWindows()
 
generate()

2. Pasos de implementación

2.1. Obtener ID y clave de Baidu

Puede solicitar una cuenta API gratuita en la API de Baidu. Hay miles de reconocimientos de rostros gratuitos todos los días. La siguiente imagen muestra la cuenta de API que solicité y luego cree la cara que debe ser reconocida en la base de datos de rostros.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

2.2, crea un cliente
APP_ID = '1965####'
API_KEY = 'YXL65ekIloykyjrT4kzc####'
SECRET_KEY = 'lFiapBoZ5eBwOFyxMbiwQDmClg1u####'
client = AipFace(APP_ID, API_KEY, SECRET_KEY)
2.3, darse cuenta del reconocimiento facial

El contenido principal es que los parámetros deben ser modificados por usted mismo, luego obtener la imagen de video y luego mirarla en comparación, el nombre de la comparación y luego mirar la puntuación. Agregué una computadora para transmitirla, de modo que siempre que sea reconocida, la computadora Emisión, el retraso no supera los segundos.

Supongo que te gusta

Origin blog.csdn.net/qq_45125250/article/details/107034691
Recomendado
Clasificación