python-百度云人脸识别——调用方法(1)

首次写博客,谢谢您的阅读

本教程前提是安装好环境
先附上例程

from aip import AipFace
import base64

# 定义常量
APP_ID ="xxxxxx"#xxxx换成自己的APP_ID 
API_KEY ="xxxxxx"#xxxx换成自己的API_KEY 
SECRET_KEY ="xxxxxx"#xxxx换成自己的SECRET_KEY 
imageType = "BASE64"
groupIdList = "1"   #人脸组

filePath="123.jpg"#照片路径
# 初始化AipFace对象
client = AipFace(APP_ID, API_KEY, SECRET_KEY)

f=open(filePath,"rb")
data = base64.b64encode(f.read())#编码格式,技术文档要求
f.close()
image=str(data,'UTF-8')

result = client.search(image, imageType, groupIdList);

if result["error_msg"] in "SUCCESS":
    score=result["result"]["user_list"][0]["score"]
    user_id=result["result"]["user_list"][0]["user_id"]
    if score>80:
        print(user_id,":验证成功")
    else:
        print("没有找到此人")
else:
    print("error:",result["error_msg"])

以上代码是识别人脸,通过对比你百度云人脸库的照片,返回结果,其中:
result是一个dict字典
其内容是
{
‘error_code’: 0,
‘error_msg’: ‘SUCCESS’,
‘log_id’: 744193247093702911,
‘timestamp’: 1544709370,
‘cached’: 0,
‘result’: {‘face_token’: ‘878857faccb27a83a2206082abe22a11’,
‘user_list’: [
{
‘group_id’: ‘1’,
‘user_id’: ‘123’,
‘user_info’: ‘’,
‘score’: 100
}
]
}
}
通过查找得到的score就是人脸对比的像是结果,一般score大于80就认为是同一个人
score=result[“result”][“user_list”][0][“score”]

附上search的函数接口代码
来源于API的face.py

def search(self, image, image_type, group_id_list, options=None):
        """
            人脸搜索
        """
        options = options or {}

        data = {}
        data['image'] = image
        data['image_type'] = image_type
        data['group_id_list'] = group_id_list

        data.update(options)
        return self._request(self.__searchUrl, json.dumps(data, ensure_ascii=False), {
            'Content-Type': 'application/json',
        })

本人刚学python,在这个例程所遇到的坑是 search接口参数image的格式问题
python-百度云人脸识别——调用方法(1)_第1张图片附上编码解码的代码

f=open(filePath,"rb")
data = base64.b64encode(f.read())#编码格式,技术文档要求
f.close()
image=str(data,'UTF-8')

可以将这4行代码封装成函数,得到image传给search的第一参数image

到此,本教程结束。
通过调用百度的API,做了一个人脸考勤系统,后期再分享出来。
对此还有其他问题,欢迎留言,一起学习探讨。

你可能感兴趣的:(python-百度云人脸识别——调用方法(1))