• 安装
​pip install baidu-aip
  •  代码
# -*- coding: UTF-8 -*-  

from aip import AipFace
import base64

# 参考《百度人脸识别:功能开通》
BAIDU_APP_ID     = "15"
BAIDU_API_KEY    = "4o"
BAIDU_SECRET_KEY = "PY"

BAIDU_IMAGE_TYPE = "BASE64"
BAIDU_GROUP_ID   = "quantum6"

AVATAR_PATH      = "../faceid_avatar/"

# 图片转换为base64
def baidu_face_image_to_base64(image_file):
    image_open = open(image_file, 'rb')
    image_data = base64.b64encode(image_open.read())
    image_data = str(image_data)
    return image_data

# 初始化,读取某个目录的员工头像,并加到百度上
def baidu_face_init():
    global baidu_face_client
    baidu_face_client = AipFace(BAIDU_APP_ID, BAIDU_API_KEY, BAIDU_SECRET_KEY)
    images = glob.glob(os.path.join(AVATAR_PATH, "*.jpg"))
    if len(images) == 0:
        raise RuntimeError("no person in the database, please check folder.")
    for image in images:
        image_base64 = baidu_face_image_to_base64(image)
        # 从文件名中截取
        user_id = os.path.basename(image)[:-4]
        response = baidu_face_client.addUser(image_base64, BAIDU_IMAGE_TYPE, BAIDU_GROUP_ID, user_id)
        print(response)

# 检查这个图片是否是员工
def baidu_face_check(image):
    image_base64 = baidu_face_image_to_base64(image)
    response = baidu_face_client.search(image_base64, BAIDU_IMAGE_TYPE, BAIDU_GROUP_ID)
    print(response)

    if (0 == response["error_code"]):
        response = response["result"]["user_list"][0]
        user_id  = response["user_id"]
        score    = response["score"]
        print(user_id, score)
        return user_id, score
    else:
        return "error"


# 检查是否有人脸
def baidu_face_dected(image_file):
    options = {}
    options["max_face_num"] = 3

    image_base64 = baidu_face_image_to_base64(image)
    response = baidu_face_client.detect(image_base64, BAIDU_IMAGE_TYPE, options)
    if (0 == response["error_code"]):
        print(response["result"])
    else:
        return TEXT_NOT_FOUND

# TEST
baidu_face_init()
TEST_STRANGER_FILE="../faceid_stranger_avatar/2.jpg"
# 可以先判断是否有人脸,再进行比较
#baidu_face_dected(TEST_STRANGER_FILE)

baidu_face_check(TEST_STRANGER_FILE)