Rufen Sie die Baidu-API auf, um die Gesichtserkennung zu realisieren

1. Code

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. Implementierungsschritte

2.1 Baidu ID und Schlüssel abrufen

Sie können ein kostenloses API-Konto in der Baidu-API beantragen. Es gibt täglich Tausende von kostenlosen Gesichtserkennungen. Das folgende Bild zeigt das API-Konto, das ich beantragt habe, und erstellt dann das Gesicht, das in der Gesichtsdatenbank erkannt werden muss.
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

2.2 Erstellen Sie einen Client
APP_ID = '1965####'
API_KEY = 'YXL65ekIloykyjrT4kzc####'
SECRET_KEY = 'lFiapBoZ5eBwOFyxMbiwQDmClg1u####'
client = AipFace(APP_ID, API_KEY, SECRET_KEY)
2.3 Gesichtserkennung realisieren

Der Hauptinhalt besteht darin, dass die Parameter von Ihnen selbst geändert werden müssen, um dann das Videobild zu erhalten und es dann durch Vergleich, den Namen des Vergleichs und dann die Partitur zu betrachten. Ich habe einen Computer hinzugefügt, um es zu senden, solange es erkannt wird, wird der Computer es tun Broadcast, die Verzögerung überschreitet nicht Sekunden.

Ich denke du magst

Origin blog.csdn.net/qq_45125250/article/details/107034691
Empfohlen
Rangfolge