简单几步用Python实现人脸对比

简单几步用Python实现人脸对比

说明:这是我暑假应实习单位需求使用百度api编写的一个简单的人脸相似度对比,其间处理了十万左右的照片,主要是为了判断是否为同一人

a.获取百度人脸识别api的api key 和secret key

去哪获取呢?网址:http://ai.baidu.com/tech/face,创建应用

b.获取AccessToken

这一部分在百度的说明文档里也有教你怎么获取和拼接,在这里我就简单的说明一下。
a.向授权服务地址:发送请求并在URL后带上一下参数:

  • grand_type :
  • client_id:应用的api key
  • client_secret:应用的secret key
    上面的参数都为必须
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. 一旦照片问题或者请求太频繁或者网络问题都会导致程序停止

所以不得不又准备两个照片批量压缩和格式批量转换的程序
至此,一套较为完整的简单的身份验证程序算是初步上线了,此程序前后共处理了十万张左右照片,其间不乏人工的介入。

改进优化版(图形交互界面以及针对上述问题的优化)在一定程度上实现了完全自动化,有时间会发出来
简单几步用Python实现人脸对比_第1张图片

你可能感兴趣的:(Python,人脸1:1,深度学习,机器学习,人脸识别)