zoukankan      html  css  js  c++  java
  • python人脸对比

    import sys  
    import ssl  
    from urllib import request,parse  
     
    # client_id 为官网获取的AK, client_secret 为官网获取的SK  
    #获取token  
    def get_token():  
        client_id =API Key
        client_secret =Secret Key
        host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=%s&client_secret=%s'%(client_id,client_secret)  
        req = request.Request(host)  
        req.add_header('Content-Type', 'application/json; charset=UTF-8')  
        response = request.urlopen(req)  
        #获得请求结果  
        content = response.read()  
        #结果转化为字符  
        content = bytes.decode(content)  
        #转化为字典  
        content = eval(content[:-1])  
        return content['access_token']  
     
     
    #转换图片  
    #读取文件内容,转换为base64编码  
    #二进制方式打开图文件  
    def imgdata(file1path,file2path):  
        import base64  
        f=open(r'%s' % file1path,'rb')   
        pic1=base64.b64encode(f.read())   
        f.close()  
        f=open(r'%s' % file2path,'rb')   
        pic2=base64.b64encode(f.read())  
        f.close()  
        #将图片信息格式化为可提交信息,这里需要注意str参数设置  
        params = {"images":str(pic1,'utf-8') + ',' + str(pic2,'utf-8')}  
        return params  
     
    #提交进行对比获得结果  
    def img(file1path,file2path):  
        token = get_token()  
        #人脸识别API  
        #url = 'https://aip.baidubce.com/rest/2.0/face/v2/detect?access_token='+token  
        #人脸对比API  
        url = 'https://aip.baidubce.com/rest/2.0/face/v2/match?access_token='+token  
        params = imgdata(file1path,file2path)  
        #urlencode处理需提交的数据  
        data = parse.urlencode(params).encode('utf-8')  
        req = request.Request(url,data=data)  
        req.add_header('Content-Type', 'application/x-www-form-urlencoded')  
        response = request.urlopen(req)  
        content = response.read()  
        content = bytes.decode(content)  
        content = eval(content)
        print(content)
        #获得分数  
        score = content['result'][0]['score']  
        if score>80:  
            return '照片相似度:'+str(score)+',同一个人'  
        else:  
            return '照片相似度:'+str(score)+',不是同一个人'  
     
    if __name__ == '__main__':  
        file1path = 'd:/ym1.jpg'  
        file2path = 'd:/ym2.jpg'  
        res = img(file1path,file2path)  
        print(res) 

  • 相关阅读:
    gcc5.2版本安装详解
    Java的各种加密算法
    Response.ContentType 详细列表
    使用C#选择文件夹、打开文件夹、选择文件
    C#从SQL server数据库中读取l图片和存入图片
    GridView导出成Excel字符"0"丢失/数字丢失的处理方式 收藏
    只能在执行Render() 的过程中调用 RegisterForEventValidation;
    维护删除订单后,清空安装和售后信息;条码打印软件补充打印问题
    Bind("入库日期", "{0:yyyy-MM-dd}") 关于asp.net格式化数据库日期字符串
    特别注意: range.Text.ToString(); 和 range.Value2.ToString(); 的区别
  • 原文地址:https://www.cnblogs.com/chenlove/p/8996546.html
Copyright © 2011-2022 走看看