人工智能之Python人脸对比、人脸检测
人脸对比与人脸检测
- 人脸对比
- 查看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人脸对比、人脸检测相关推荐
- 使用PaddlePaddle实现人脸对比和人脸识别
原文博客:Doi技术团队 链接地址:https://blog.doiduoyi.com/authors/1584446358138 初心:记录优秀的Doi技术团队学习经历 前言 本文章我们来学习一下使 ...
- opencv 人脸识别_人工智能-OpenCV+Python实现人脸识别(视频人脸检测)
上期文章我们分享了opencv识别图片中的人脸,OpenCV图片人脸检测,本期我们分享一下如何从视频中检测到人脸 视频人脸检测 OpenCV打开摄像头特别简单,只需要如下一句代码 capture = ...
- 人工智能-OpenCV+Python实现人脸识别(视频人脸检测)
上期文章我们分享了opencv识别图片中的人脸,OpenCV图片人脸检测,本期我们分享一下如何从视频中检测到人脸 视频人脸检测 OpenCV打开摄像头特别简单,只需要如下一句代码 capture = ...
- opencv 训练人脸对比_【项目案例python与人脸识别】基于OpenCV开源计算机视觉库的人脸识别之python实现...
" 本项目是一个基于OpenCV开源库使用python语言程序实现人脸检测的项目,该项目将从[项目基础知识](即人脸识别的基本原理).[项目实践](人脸识别所需要的具体步骤及其python程 ...
- [计算机视觉]人脸应用:人脸检测、人脸对比、五官检测、眨眼检测、活体检测、疲劳检测
人脸应用在计算机视觉体系中占很大一块,在深度学习火起来之前,基于传统机器学习的人脸应用就已经很成熟了,有很多商用应用场景.本文用一个可以实际运行的Demo来说明人脸应用中常见的技术概念,包含'人脸检测 ...
- Android手把手教你使用阿里云接口实现人脸定位、人脸检测、人脸对比功能。
前言 现如今,人工智能越来越火,以至于我们必须了解和掌握它,今天我们就来结合阿里云的接口来实现人脸定位,人脸检测等功能. 废话不多说,先上效果图: 随便在网上找了三张图片进行检测,检测结果只显示了每一 ...
- 【优秀课设】基于OpenCV的Python人脸识别、检测、框选(遍历目录下所有照片依次识别 视频随时标注)
基于OpenCV的Python人脸识别.检测.框选 (遍历目录下所有照片依次识别 视频随时标注) 移步: https://blog.csdn.net/weixin_53403301/article/d ...
- python人工智能图像识别_人工智能之Python人脸识别技术,人人都能做识别!
原标题:人工智能之Python人脸识别技术,人人都能做识别! 作者丨Python小哥哥 https://www.jianshu.com/p/dce1498ef0ee 一.环境搭建 1.系统环境 Ubu ...
- Python调用百度API进行人脸对比
目录 1. 作者介绍 2. 关于Base64知识介绍 2.1 Bsae64是什么 2.1 Bsae64编码原理 3. 实验过程 3.1 实验过程 3.2 实验代码 3.3 运行结果 3.4 问题分析 ...
最新文章
- 东芝打印机cd40故障_东芝小尺寸UV平板机介绍
- 《c语言从入门到精通》看书笔记——第11章 结构体和共用体
- jquery怎么判断不同的字显示不同的颜色_这个双十一,摄影师的显示器该换了,优派VP2785-2K显示器评测_显示器...
- C++/C--多个vector拼接的方法【转载】
- html5首页图标怎么除掉,移动端H5页面端如何除去input输入框的默认样式
- ccd视觉定位教程_CCD与CMOS哪个更能推动工业相机市场的发展
- tcp/ip协议listen函数中backlog参数的含义
- Poi读写Excel文件
- 室内设计数据手册pdf_室内设计资料集pdf下载-室内设计资料集电子版pdf高清扫描版-东坡下载...
- PHP 获取服务器磁盘空间
- python 数据爬虫 爬取糗百
- 2.10 lnmp架构_慢查询 MySQL路由器 MHA高可用
- 教师资格综合素质知识要点记录
- 双线性光强插值(Gouraud明暗处理)学习笔记
- Crazy Bird
- python爬虫,爬取禅道BUG信息列表
- 拓嘉辰丰电商:关于拼多多推广计划有哪些问题
- 计算机有网络但打不开网页,手把手教你有网络但是打不开网页怎么办?
- mac自带邮箱添加邮箱_如何在Mac上的Mail中创建或删除邮箱
- webstorm如何自动修复prettier提示的错误