from aip import AipFace
import base64


# 人脸比对函数(client:人脸识别客户，img_src_path:参考的原图路径，img_det_path：比对人脸路径）
def face_match(client, img_src_path, img_det_path):
    # 将两张照片的数据分别转换为base64格式编码的字符串
    img_scr64 = str(base64.b64encode(open(img_src_path, 'rb').read()), 'utf-8')
    img_det64 = str(base64.b64encode(open(img_det_path, 'rb').read()), 'utf-8')
    # 调用百度AI人脸比对函数
    result = client.match(
        [{'image': img_scr64, 'image_type': 'BASE64'},
         {'image': img_det64, 'image_type': 'BASE64'}])
    result = result['result']  # 从接口返回值中取出result项
    if result is None:  # 若result值为空，说明人脸比对失败，返回False
        return False
    elif result['score'] >= 80:  # 若result中的score值大于80，返回True,否则返回False
        return True
    else:
        return False


# 填写你的文字识别应用的App ID、API Key、Secret Key
APP_ID = ''
API_Key = ''
Secret_Key = ''
client = AipFace(APP_ID, API_Key, Secret_Key)  # 创建百度AI人脸识别客户端
img_src_path = './imgs/org-1.jpg'  # 参考的原图文件路径
# 人脸识别，若直接按回车键，退出循环
while True:
    det_fName = input('识别的单人照文件名（若直接按回车，程序结束）：')
    if det_fName == '':
        break
    img_det_path = './imgs/' + det_fName  # 要比对的人脸图像文件路径
    # 调用人脸比对函数，输出识别结果
    if face_match(client, img_src_path, img_det_path):
        print('识别结果：是同一人！')
    else:
        print('识别结果：不是同一人！')
