基于Python并调用百度云API接口的简单人脸识别对比的实现
你好!这里是一篇关于“简单人脸识别对比的实现”的文章,也是我在学校程序设计课程上的一个小项目,是用Python来进行实现的,并调用了百度智能云的人脸识别API。希望能够帮到你吖!
注册百度智能云账号并申请人脸识别API
简单的人脸识别,当然需要“外部势力”的支持,这里我们选择百度爸爸家的产品,人脸识别以及对比的核心代码,交给百度实现:
- 注册百度智能云账号。链接: 百度智能云登录
- 登陆后为此界面,点击产品服务。
- 相继选择产品服务、人工智能、人脸识别。
- 选择创建应用。
5.填写应用名称、选择应用类型,接口选择就默认就好,填写应用描述 ,创建完毕后查看应用详情。 - 得到应用所需的API Key、Secret Key以及人脸对比的请求地址,把这些记下来,代码里会用到。
代码解读部分
获取API
client_id = 'API Key'
client_secret = 'Secret Key' #Please replace when using
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=%s&client_secret=%s'%(client_id,client_secret)
将API Key与Secret Key替换为刚刚在申请API接口时得到的东西。
response=requests.get(host)
access_token=eval(response.text)['access_token']
request_url='https://aip.baidubce.com/rest/2.0/face/v3/match'
API = request_url + "?access_token=" + access_token
向服务器申请access_token,并拼接至request_url,request_url即为申请API接口时得到的人脸对比请求地址。
图片编码
f=open(r'%s' % img1,'rb')
pic1=base64.b64encode(f.read())
f.close()
f=open(r'%s' % img2,'rb')
pic2=base64.b64encode(f.read())
f.close()
params=json.dumps([
{"image":str(pic1,"utf-8"),"image_type":'BASE64',"face_type":"LIVE"},
{"image":str(pic2,"utf-8"),"image_type":'BASE64',"face_type":"IDCARD"}])
对两张待对比的照片进行Base64编码,可参见人脸识别API接口的使用文档
图片对比
API=Get_API()
params=Image_coding(img1,img2)
content=requests.post(API,params).text
score=eval(content)['result']['score']
if score>=60:
print('二人相似度得分为 %s, 是同一人的可能性极大'%str(score))
else:
print('二人相似度得分为 %s, 不是同一人的可能性极大'%str(score))
先运行上面的两个函数,然后用API 与图片信息向服务器请求数据,得到返回值后提取出score即为百分制的对比得分。然后设置一个阈值,输出结果。
运行结果
在根目录放两张照片,运行程序!(我放了自拍和刘亦菲的照片)
我跟茜茜的相似度为0,心寒了(大哭,哇————!)。
代码完整版
此处献上完整版的代码链接,大家可以移步我的Github账户!
完整代码链接在这里!
如果你觉得能够帮到你的话,求求大噶停留一秒钟给个赞吧!个赞吧!赞吧!吧!