说明:这是我暑假应实习单位需求使用百度api编写的一个简单的人脸相似度对比,其间处理了十万左右的照片,主要是为了判断是否为同一人
a.获取百度人脸识别api的api key 和secret key
去哪获取呢?网址:http://ai.baidu.com/tech/face,创建应用
b.获取AccessToken
这一部分在百度的说明文档里也有教你怎么获取和拼接,在这里我就简单的说明一下。
a.向授权服务地址:发送请求并在URL后带上一下参数:
api1 = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=GuZ8GCOOQbyrPwGxTmiGR5QW&client_secret=qpyP1Yju3kTyQ
#此URL为向授权服务请求的完整地址,先命名为api1
c.获取Access_Token的完整内容和拼接api
def get_token():
response=requests.get(api1)
access_token=eval(response.text)['access_token']
api2="https://aip.baidubce.com/rest/2.0/face/v3/match"+"?access_token="+access_token
return api2
上面可以打印一下response
d.读取图片数据
def read_img(img1,img2):
with open(img1,'rb') as f:
pic1=base64.b64encode(f.read())
with open(img2,'rb') as f:
pic2=base64.b64encode(f.read())
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"}
])
return params
e.发起请求拿到对比结果
def analyse_img(file1,file2):
params=read_img(file1,file2)
api=get_token()
content=requests.post(api,params).text
score=eval(content)['result']['score']
return score
完整代码请留言
此程序对照片有一定的要求
1. 两张照片的格式需要一致,因为我遍历了两个文件夹,文件名相同的进行比较
2. 照片大小不能太大太小
3. 一旦照片问题或者请求太频繁或者网络问题都会导致程序停止
所以不得不又准备两个照片批量压缩和格式批量转换的程序
至此,一套较为完整的简单的身份验证程序算是初步上线了,此程序前后共处理了十万张左右照片,其间不乏人工的介入。