你好!这里是一篇关于“简单人脸识别对比的实现”的文章,也是我在学校程序设计课程上的一个小项目,是用Python来进行实现的,并调用了百度智能云的人脸识别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账户!
完整代码链接在这里!