公司头条

推广运维推广运维
关注: 0贴子:13 排名: 4 
0 回复贴,31 次查看
<返回列表

python实战项目,人脸识别,挪用百度人工智能 API 实现 ...

1

主题

1

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2018-11-6 13:23:54
人脸识别官方 API 介绍

接口能力:


  • 两张人脸图片相似度比拟:比对两张图片中人脸的相似度,并返回相似度分值;</p>
  • 多种图片类型:支持生活照、证件照、身份证芯片照、带网纹照四种类型的人脸比拟;
  • 活体检测:基于图片中的破绽阐发,判断其中的人脸是不是为二次翻拍(举例:如用户A用手机拍摄了一张包含人脸的图片一,用户B翻拍了图片一获得了图片二,并用图片二伪造成用户A去进行识别操作,这类情况普遍产生在金融开户、实名认证等环节。);
  • 质量检测:返回模糊、光照等质量检测信息,用于辅助判断图片是不是切合识别要求;
请求说明:


  • 请求体花样化:Content-Type为application/x-www-form-urlencoded,通过urlencode花样化请求体。
  • Base64编码:请求的图片需经过Base64编码,图片的base64编码指将图片数据编码成一串字符串,使用该字符串代替图像地址。您可以首先获得图片的二进制,然后用Base64花样编码即可。需要注意的是,图片的base64编码是不包含图片头的,如data:image/jpg;base64,
  • 图片花样:现支持PNG、JPG、JPEG、BMP,不支持GIF图片
请求示例


  • HTTP要领:POST
    请求URL: http://aip.百度bce.com/rest/2.0/face/v2/match
  • URL参数:
    access_token    通过API Key和Secret Key获得的access_token。
  • Header:
    Content-Type    application/x-www-form-urlencoded
    Body中放置请求参数,参数详情以下:
python实战项目,人脸识别,挪用百度人工智能 API 实现 ...
  说明:两张请求的图片请离别进行base64编码。
python 实战代码

同前面两节一样,分两步走:
1. 获得 token

获得 token 的请求 url 与前面两节略有不同,AK 和 SK 也不同,这点要注意,不然获得到的 token 也是无法校验通过的。
python实战项目,人脸识别,挪用百度人工智能 API 实现 ...
下面直接上代码,文件名 token.py:
# encoding:utf-8import urllib, urllib2, sysimport ssl, jsonAK = "fGTcxxxxxxxxxxxxxk68c"SK = "vKUxxxxxxxxxxxxxxxxxxxxxxxxxGq2u"# token 请求 url 与图片不一样host = 'http://aip.百度bce.com/oauth/2.0/token?grant_type=client_credentials'\       '&client_id=%s'\       '&client_secret=%s' % (AK, SK)def GetToken():    request = urllib2.Request(host)    request.add_header('Content-Type', 'application/json; charset=UTF-8')    response = urllib2.urlopen(request)    content = response.read()    if (content):        js = json.loads(content)        # return js['refresh_token']        return js['access_token']    return None2. 人脸识别

这里实现的是人脸比对,即输入两张人脸图片,输出两小我私家脸属于同一人的得分。文件名 recg.py:
# encoding:utf-8import base64import urllibimport urllib2, jsonfrom token import GetToken'''人脸比拟'''url = "http://aip.百度bce.com/rest/2.0/face/v2/match"def FaceRecg(face1, face2, token):    f = open(face1, 'rb')    # 参数images:图像base64编码    img1 = base64.b64encode(f.read())    # 二进制方法打开图文件    f = open(face2, 'rb')    # 参数images:图像base64编码    img2 = base64.b64encode(f.read())    params = {"images":img1 + ',' + img2}    params = urllib.urlencode(params)    request_url = url + "?access_token=" + token    request = urllib2.Request(url=request_url, data=params)    request.add_header('Content-Type', 'application/x-www-form-urlencoded')    response = urllib2.urlopen(request)    content = response.read()    if content:        js = json.loads(content)        for item in js['result']:            print(u"%2.2f%% 多是同一人" % (float(item['score'])))if __name__ == "__main__":    FaceRecg('【图片1】', '【图片2】', GetToken())      #前面两个参数是图片路径3. 测试

我们在代码所在路径新建一个文件夹 pic,里面放入要比拟的图片:
python实战项目,人脸识别,挪用百度人工智能 API 实现 ...
这样,recg.py 的 main 部分的图片就能够以下给出:
if __name__ == "__main__":    FaceRecg('pic/1.jpg', 'pic/2.jpg', GetToken())      #前面两个参数是图片路径最终测试结果以下:
python实战项目,人脸识别,挪用百度人工智能 API 实现 ...
两小我私家脸属于同一人的得分达到 86.98 分,可以看出识别结果还是不错的。
再看一组测试,此次使用两小我私家,看看效果:
python实战项目,人脸识别,挪用百度人工智能 API 实现 ...
识别结果不错,一点也不像。
再写一点

其实有了上面这些基础,我们完全可以从一堆图片里挑出给出的某一张。举个例子,我们往 pic 里再加入以下几张图片:
python实战项目,人脸识别,挪用百度人工智能 API 实现 ...
python实战项目,人脸识别,挪用百度人工智能 API 实现 ...
python实战项目,人脸识别,挪用百度人工智能 API 实现 ...
加上上面 4 张,一共 7 张图片,我们输入第 3 张图片:

python实战项目,人脸识别,挪用百度人工智能 API 实现 ...
然后从余下 6 张里挑出一张最像的,python 代码可以以下修改:

# encoding:utf-8import base64import urllibimport urllib2, jsonfrom token import GetToken'''人脸比拟'''url = "http://aip.百度bce.com/rest/2.0/face/v2/match"def FaceRecg(face1, face2, token):    f = open(face1, 'rb')    # 参数images:图像base64编码    img1 = base64.b64encode(f.read())    # 二进制方法打开图文件    f = open(face2, 'rb')    # 参数images:图像base64编码    img2 = base64.b64encode(f.read())    params = {"images":img1 + ',' + img2}    params = urllib.urlencode(params)    request_url = url + "?access_token=" + token    request = urllib2.Request(url=request_url, data=params)    request.add_header('Content-Type', 'application/x-www-form-urlencoded')    response = urllib2.urlopen(request)    content = response.read()    if content:        js = json.loads(content)        # for item in js['result']:            # print(u"%2.2f%% 多是同一人" % (float(item['score'])))        return float(js['result'][0]['score'])if __name__ == "__main__":    p = [0,0,0,0,0,0,0]    for i in range(1, 8):        if i!=3:                    # 不识别自己            picI = 'pic/%d.jpg' % i            p[i-1] = FaceRecg('pic/3.jpg', picI, GetToken())            print '图片 %d 的相似性得分:%2.2f' % (i, p[i-1])print '\n很大可能图片 %d 和图片 3 是同一人' % (p.index(max(p))+1)最终输出结果以下:

python实战项目,人脸识别,挪用百度人工智能 API 实现 ...
可以看出,效果很好,至此,我们就完成了 python 人脸识别 代码。
回复

使用道具 举报

快速回帖 使用高级回帖 (可批量传图、还有插入视频等功能哦!)

您需要登录后才可以回帖 登录 | 立即注册

  • 发布信息免费
  • 发贴彩色标题
  • 签到额外经验值

如何快速提升等级,查看[积分规则]

活动中心

查看更多>>
最新热版
会员排行
©2001-2018 公司头条 https://www.ewxf.com中国互联网举报中心沪ICP备14046342号-13 本站内容均来自网络转载或网友提供,如有侵权请及时联系我们,Cxy@izhiben.CN 公安网备|网站地图 企业map 产品map 新闻map 其他map
Archiver手机版小黑屋广告合作QQ:864633495
发帖 客服 微信 手机版 举报