首次写博客,谢谢您的阅读
本教程前提是安装好环境
先附上例程
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的格式问题
附上编码解码的代码
f=open(filePath,"rb")
data = base64.b64encode(f.read())#编码格式,技术文档要求
f.close()
image=str(data,'UTF-8')
可以将这4行代码封装成函数,得到image传给search的第一参数image
到此,本教程结束。
通过调用百度的API,做了一个人脸考勤系统,后期再分享出来。
对此还有其他问题,欢迎留言,一起学习探讨。