人脸对比与人脸检测

  • 人脸对比
    • 查看API文档
    • 获取Access Token
    • 图片转为base64格式
    • 请求参数
    • 调用
    • 返回示例
  • 人脸检测
    • 代码
      • 返回示例
    • 错误识别错误码

人脸对比

两张人脸1 :1对比,得到人脸相识度。

查看API文档

人脸识别接口分为V2和V3两个版本,本文档为V3版本接口的说明文档,请确认您在百度云后台获得的是V3版本接口权限,再来阅读本文档。

辨别接口版本的方法是:在百度云后台进入【应用列表】,点击【应用名称】,在【API列表】中可以看到【请求地址】,若请求地址中带有【v3】标识,则您具有的是v3权限,可以阅读本文档;若请求地址中带有【v2】标识,则您具有的是v2权限,应该去阅读v2文档。

Base64编码:请求的图片需经过Base64编码,图片的base64编码指将图片数据编码成一串字符串,使用该字符串代替图像地址。您可以首先得到图片的二进制,然后用Base64格式编码即可。
图片格式:现支持PNG、JPG、JPEG、BMP,不支持GIF图片。

获取Access Token

向API服务地址使用POST发送请求,必须在URL中带上参数access_token,可通过后台的API Key和Secret Key生成。

API_Key = '自己的API_Key'
Secret_Key = '自己的Secret_Key '
def get_token_baidu():client_id = API_Keyclient_secret = Secret_Keyhost = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=%s&client_secret=%s'%(API_Key,Secret_Key)response = requests.get(host)if response:print(response.json())return response.json()['access_token']

图片转为base64格式

def get_imgdata(file1path, file2path):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()strp1 = str(pic1,'UTF-8')strp2 = str(pic2,'UTF-8')return strp1,strp2

请求参数

两张图片上传时的JSON格式
[{"image": "sfasq35sadvsvqwr5q...",通过BASE64转码后得到的图片文件"image_type": "BASE64","face_type": "LIVE","quality_control": "LOW","liveness_control": "HIGH"},{"image": "sfasq35sadvsvqwr5q...","image_type": "BASE64","face_type": "IDCARD","quality_control": "LOW","liveness_control": "HIGH"}
]

人脸对比函数,传入两张合法的格式图片(PNG、JPG、JPEG、BMP),通过get_ingdata()函数得到base64转码后的图片。

def myface_compare(file1path, file2path):strp1,strp2 = get_imgdata(file1path, file2path)#HTTP方法:POST#URL: https://aip.baidubce.com/rest/2.0/face/v3/matchrequest_url = "https://aip.baidubce.com/rest/2.0/face/v3/match"#Body中放置请求参数params = "[{\"image\": \"%s\", \"image_type\": \"BASE64\", \"face_type\": \"LIVE\", \"quality_control\": \"LOW\"},{\"image\": \"%s\", \"image_type\": \"BASE64\", \"face_type\": \"IDCARD\", \"quality_control\": \"LOW\"}]"%(strp1,strp2)access_token = get_token_baidu()request_url = request_url + "?access_token=" + access_tokenheaders = {'content-type': 'application/json'}response = requests.post(request_url, data=params, headers=headers)if response:#print(response.json())myret = response.json()#print(type(myret))print(myret)score = myret['result']['score']print(score)return score

调用

#传进去两张图片的路径
myface_compare("3.jpg","4.jpg")

返回示例

{"score": 44.3,"face_list": [  //返回的顺序与传入的顺序保持一致{"face_token": "fid1"},{"face_token": "fid2"}]
}

人脸检测

接口能力
人脸检测:检测图片中的人脸并标记出位置信息;
人脸关键点:展示人脸的核心关键点信息,及150个关键点信息。
人脸属性值:展示人脸属性信息,如年龄、性别等。
人脸质量信息:返回人脸各部分的遮挡、光照、模糊、完整度、置信度等信息。

获取Access Token和图片转码与人脸对比方法一致,不同的是这里请求参数;

HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3/detect


需要检测人脸的什么信息,添加相应的参数就可以了:
max_face_num=10,最大处理人脸的个数
face_fields=age,beauty,expression,faceshape,gender,glasses,race,quality,emotion,mask,landmark150(年龄、样貌得分、表情、脸型…)

代码

使用之前注意更换自己的API_key,Secret_Key

import os
import sys
import ssl
import base64
import requests
from urllib import requestdef get_token_baidu():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)response = requests.get(host)if response:print(response.json())return response.json()['access_token']def get_imgdata(file1path):f = open(r'%s'%file1path,'rb')print(f)pic1 = base64.b64encode(f.read())f.close()strp1 = str(pic1,'UTF-8')return strp1def myface_compare(file1path):strp1= get_imgdata(file1path)request_url = "https://aip.baidubce.com/rest/2.0/face/v3/detect"params = "{\"image\":\"%s\",\"image_type\":\"BASE64\",\"max_face_num\":10,\"face_field\":\"age,beauty,expression,face_shape,gender,glasses,landmark,landmark150,race,\
quality,eye_status,emotion,face_type,mask,spoofing\"}"%(strp1)access_token = get_token_baidu()request_url = request_url + "?access_token=" + access_tokenheaders = {'content-type': 'application/json'}response = requests.post(request_url, data=params, headers=headers)j=1if response:#print (response.json())print (response.json()['result'])print(response.json()['result']['face_num'])for i in response.json()['result']['face_list']:print("第%d张脸:"%j,i['face_token'])print("age:",i['age'])print("beauty:",i['beauty'])print("expression:",i['expression']['type'])print("gender:",i['gender']['type'])print("glasses:",i['glasses']['type'])j+=1
myface_compare("5.jpg")

返回示例

这里从返回结果中提取了face_token、年龄、beauty(样貌得分)、表情、性别、有无眼镜。

这个API可以获取颜值得分哦,想要知道自己颜值能得多少分,人脸检测帮你检测,亲测可以使用。

错误识别错误码

请参考人脸识别错误码

人工智能之Python人脸对比、人脸检测相关推荐

  1. 使用PaddlePaddle实现人脸对比和人脸识别

    原文博客:Doi技术团队 链接地址:https://blog.doiduoyi.com/authors/1584446358138 初心:记录优秀的Doi技术团队学习经历 前言 本文章我们来学习一下使 ...

  2. opencv 人脸识别_人工智能-OpenCV+Python实现人脸识别(视频人脸检测)

    上期文章我们分享了opencv识别图片中的人脸,OpenCV图片人脸检测,本期我们分享一下如何从视频中检测到人脸 视频人脸检测 OpenCV打开摄像头特别简单,只需要如下一句代码 capture = ...

  3. 人工智能-OpenCV+Python实现人脸识别(视频人脸检测)

    上期文章我们分享了opencv识别图片中的人脸,OpenCV图片人脸检测,本期我们分享一下如何从视频中检测到人脸 视频人脸检测 OpenCV打开摄像头特别简单,只需要如下一句代码 capture = ...

  4. opencv 训练人脸对比_【项目案例python与人脸识别】基于OpenCV开源计算机视觉库的人脸识别之python实现...

    " 本项目是一个基于OpenCV开源库使用python语言程序实现人脸检测的项目,该项目将从[项目基础知识](即人脸识别的基本原理).[项目实践](人脸识别所需要的具体步骤及其python程 ...

  5. [计算机视觉]人脸应用:人脸检测、人脸对比、五官检测、眨眼检测、活体检测、疲劳检测

    人脸应用在计算机视觉体系中占很大一块,在深度学习火起来之前,基于传统机器学习的人脸应用就已经很成熟了,有很多商用应用场景.本文用一个可以实际运行的Demo来说明人脸应用中常见的技术概念,包含'人脸检测 ...

  6. Android手把手教你使用阿里云接口实现人脸定位、人脸检测、人脸对比功能。

    前言 现如今,人工智能越来越火,以至于我们必须了解和掌握它,今天我们就来结合阿里云的接口来实现人脸定位,人脸检测等功能. 废话不多说,先上效果图: 随便在网上找了三张图片进行检测,检测结果只显示了每一 ...

  7. 【优秀课设】基于OpenCV的Python人脸识别、检测、框选(遍历目录下所有照片依次识别 视频随时标注)

    基于OpenCV的Python人脸识别.检测.框选 (遍历目录下所有照片依次识别 视频随时标注) 移步: https://blog.csdn.net/weixin_53403301/article/d ...

  8. python人工智能图像识别_人工智能之Python人脸识别技术,人人都能做识别!

    原标题:人工智能之Python人脸识别技术,人人都能做识别! 作者丨Python小哥哥 https://www.jianshu.com/p/dce1498ef0ee 一.环境搭建 1.系统环境 Ubu ...

  9. Python调用百度API进行人脸对比

    目录 1. 作者介绍 2. 关于Base64知识介绍 2.1 Bsae64是什么 2.1 Bsae64编码原理 3. 实验过程 3.1 实验过程 3.2 实验代码 3.3 运行结果 3.4 问题分析 ...

最新文章

  1. 东芝打印机cd40故障_东芝小尺寸UV平板机介绍
  2. 《c语言从入门到精通》看书笔记——第11章 结构体和共用体
  3. jquery怎么判断不同的字显示不同的颜色_这个双十一,摄影师的显示器该换了,优派VP2785-2K显示器评测_显示器...
  4. C++/C--多个vector拼接的方法【转载】
  5. html5首页图标怎么除掉,移动端H5页面端如何除去input输入框的默认样式
  6. ccd视觉定位教程_CCD与CMOS哪个更能推动工业相机市场的发展
  7. tcp/ip协议listen函数中backlog参数的含义
  8. Poi读写Excel文件
  9. 室内设计数据手册pdf_室内设计资料集pdf下载-室内设计资料集电子版pdf高清扫描版-东坡下载...
  10. PHP 获取服务器磁盘空间
  11. python 数据爬虫 爬取糗百
  12. 2.10 lnmp架构_慢查询 MySQL路由器 MHA高可用
  13. 教师资格综合素质知识要点记录
  14. 双线性光强插值(Gouraud明暗处理)学习笔记
  15. Crazy Bird
  16. python爬虫,爬取禅道BUG信息列表
  17. 拓嘉辰丰电商:关于拼多多推广计划有哪些问题
  18. 计算机有网络但打不开网页,手把手教你有网络但是打不开网页怎么办?
  19. mac自带邮箱添加邮箱_如何在Mac上的Mail中创建或删除邮箱
  20. webstorm如何自动修复prettier提示的错误

热门文章

  1. EasyExcel 三分钟搞定导入导出
  2. java 操作Zip文件(压缩、解压、加密)
  3. html图片缩小属性,CSS属性实现同比例缩小图片
  4. addon游戏_addon_game_mode游戏基本情况设置
  5. 看<奋斗>-----论门当户对(转自新浪博客)
  6. 比尔·盖茨的另一扇视窗
  7. vscode造成c盘空间占用剧增
  8. 多媒体计算机音乐大赛评分表,歌唱比赛的评分标准
  9. 智能叉车AGV小车车载系统功能特点
  10. (三)苏世民:我的经验和教训:追梦(3)