人脸识别
人脸检测
描述
给定一张图片,返回照片上的人脸坐标
支持的模式
- client_credentials
请求方法
POST
请求地址
https://api.ecnu.edu.cn/api/v1/face/detect
请求参数
参数名 | 是否必填 | 备注 |
---|---|---|
image | 是 | base64 形式封装后,以 application/json 方式提交 |
返回参数
data
参数名 | 类型 | 备注 |
---|---|---|
image | object | 图片的基本信息 |
face | object 数组 | 人脸的基本信息 |
image
参数名 | 类型 | 备注 |
---|---|---|
mime | string | 图片的MIME |
size | number | 图片的大小,单位 byte |
width | number | 图片宽度,像素 |
height | number | 图片的高度,像素 |
face
参数名 | 类型 | 备注 |
---|---|---|
top | number | 人脸的顶部坐标 |
bottom | number | 人脸的底部坐标 |
right | number | 人脸的右侧坐标 |
left | number | 人脸的左侧坐标 |
请求示例
echo -e {\"image\":\"$(base64 face.jpeg)\"\} > body.json
curl -v -X POST -H "Authorization: Bearer 2c29fb27cfbb3bb88563200ac9c6fa2c" -H "Content-Type:application/json" -d@body.json https://api.ecnu.edu.cn/api/v1/face/detect
返回示例
{
"errCode": 0,
"errMsg": "success",
"requestId": "b621917e-c297-4a2c-afa5-ecc08cdf3b44",
"data": {
"image": {
"size": 39071,
"mime": "image/jpeg",
"width": 384,
"height": 569
},
"face": [{
"top": 160,
"left": 97,
"bottom": 345,
"right": 283
},
{
"top": 183,
"left": 197,
"bottom": 345,
"right": 383
}
]
}
}
肖像生成
描述
给定一张照片,裁剪人脸部分生成肖像,一般用于证件照片。
支持的模式
- client_credentials
请求方法
POST
请求地址
https://api.ecnu.edu.cn/api/v1/face/portrait
请求参数
参数名 | 是否必填 | 备注 |
---|---|---|
image | 是 | base64 形式封装后,以 application/json 方式提交 |
返回参数
返回 Content-Type: image/jpeg
的图片
请求示例
echo -e {\"image\":\"$(base64 face.jpeg)\"\} > body.json
curl -v -X POST -H "Authorization: Bearer 2c29fb27cfbb3bb88563200ac9c6fa2c" -H "Content-Type:application/json" -d@body.json https://api.ecnu.edu.cn/api/v1/face/portrait > portrait.jpeg
人脸比对
描述
给定两张照片,返回匹配度
支持的模式
- client_credentials
请求方法
POST
请求地址
https://api.ecnu.edu.cn/api/v1/face/compare
请求参数
参数名 | 是否必填 | 备注 |
---|---|---|
image1 | 是 | 第一张图片,base64 形式封装后,以 application/json 方式提交 |
image2 | 是 | 第二张图片,base64 形式封装后,以 application/json 方式提交 |
返回参数
data
参数名 | 类型 | 备注 |
---|---|---|
confidence | float | 置信度,[0,100] 区间,小数点后3位有效数字 |
thresholds | object | 置信区间, [0,100] 的浮点数,小数点后 3 位有效数字 |
thresholds
参数名 | 类型 | 备注 |
---|---|---|
1e-3 | float | 误识率为千分之一的置信度阈值 |
1e-4 | float | 误识率为万分之一的置信度阈值 |
1e-5 | float | 误识率为十万分之一的置信度阈值 |
请求示例
echo -e {\"image1\":\"$(base64 face1.jpeg)\"\,\"image2\":\"$(base64 face2.jpeg)\"\} > body.json
curl -v -X POST -H "Authorization: Bearer 2c29fb27cfbb3bb88563200ac9c6fa2c" -H "Content-Type:application/json" -d@body.json https://api.ecnu.edu.cn/api/v1/face/compare
返回示例
{
"errCode": 0,
"errMsg": "success",
"requestId": "b621917e-c297-4a2c-afa5-ecc08cdf3b44",
"data": {
"confidence": 99.555,
"thresholds": {
"1e-3": 65.3,
"1e-5": 76.5,
"1e-4": 71.8
}
}
}
人脸授权
描述
给定一个学工号,返回是否已经授权照片用于人脸识别
如已经授权,则返回他的照片 url,可配合照片下载的接口获取他的照片
支持的模式
- authorization_code
- client_credentials
- password
请求方法
GET
请求地址
https://api.ecnu.edu.cn/api/v1/face/authorized
请求参数
参数名 | 是否必填 | 备注 |
---|---|---|
userId | 是 | 学工号,当授权为authorization_code和password模式时可省略 |
scene | 否 | 人脸场景值,默认值为 gate,即大门刷脸入校权限 |
scene 取值范围
值 | 类型 | 备注 |
---|---|---|
gate | string | 大门刷脸入校,默认值 |
library | string | 图书馆刷脸入馆 |
consume | string | 食堂刷脸消费 |
返回参数
data
参数名 | 类型 | 备注 |
---|---|---|
authorized | bool | 是否授权 |
userId | string | 用户名 |
name | string | 姓名 |
lastUpdate | number | 最后更新时间,linux时间戳,毫秒。ts 参数将根据此字段值过滤 |
photos | object array | 脸库照片结构体的数组 |
url | string | 照片的路径,将用于后续拼接生成下载地址 |
uploadTime | number | 照片的上传时间,请根据此时间判断是否需要更新照片 |
请求示例
curl -v -H "Authorization: Bearer 2c29fb27cfbb3bb88563200ac9c6fa2c" "https://api.ecnu.edu.cn/api/v1/face/authorized?userId=20150073"
返回示例
{
"errCode": 0,
"errMsg": "success",
"requestId": "b3cdc75e-8dc7-499d-946e-a7db01db8a99",
"data": {
"userId": "20***73",
"name": "冯骐",
"lastUpdate": 1639538487073,
"authorized": true,
"photos": [{
"url": "5611d********************683.jpg",
"uploadTime": 1639538479683
}]
}
}
人脸核验
描述
给定一个学工号和照片,核验其是同一个人的置信度
用户必须已经授权照片用于人脸识别
支持的模式
- authorization_code
- client_credentials
- password
请求方法
POST
请求地址
https://api.ecnu.edu.cn/api/v1/face/check
请求参数
参数名 | 是否必填 | 备注 |
---|---|---|
userId | 是 | 学工号,当授权为authorization_code和password模式时可省略 |
image | 是 | 图片,base64 形式封装后,以 application/json 方式提交 |
scense | 是 | 人脸场景值,默认值为 gate,即大门刷脸入校权限 |
scene 取值范围
值 | 类型 | 备注 |
---|---|---|
gate | string | 大门刷脸入校,默认值 |
library | string | 图书馆刷脸入馆 |
consume | string | 食堂刷脸消费 |
返回参数
data
参数名 | 类型 | 备注 |
---|---|---|
confidence | float | 置信度,[0,100] 区间,小数点后3位有效数字 |
thresholds | object | 置信区间, [0,100] 的浮点数,小数点后 3 位有效数字 |
thresholds
参数名 | 类型 | 备注 |
---|---|---|
1e-3 | float | 误识率为千分之一的置信度阈值 |
1e-4 | float | 误识率为万分之一的置信度阈值 |
1e-5 | float | 误识率为十万分之一的置信度阈值 |
请求示例
echo -e {\"image\":\"$(base64 face.jpeg)\"\} > body.json
curl -v -X POST -H "Authorization: Bearer 2c29fb27cfbb3bb88563200ac9c6fa2c" -H "Content-Type:application/json" -d@body.json "https://api.ecnu.edu.cn/api/v1/face/check?userId=20150073&scene=gate"
返回示例
{
"errCode": 0,
"errMsg": "success",
"requestId": "b621917e-c297-4a2c-afa5-ecc08cdf3b44",
"data": {
"confidence": 99.555,
"thresholds": {
"1e-3": 65.3,
"1e-5": 76.5,
"1e-4": 71.8
}
}
}
人脸搜索
描述
给定一个照片,搜索授权库中相似度最高的那个人
支持的模式
- client_credentials
请求方法
POST
请求地址
https://api.ecnu.edu.cn/api/v1/face/search
请求参数
参数名 | 是否必填 | 备注 |
---|---|---|
image | 是 | 图片,base64 形式封装后,以 application/json 方式提交 |
scense | 是 | 人脸场景值,默认值为 gate,即大门刷脸入校权限 |
scene 取值范围
值 | 类型 | 备注 |
---|---|---|
gate | string | 大门刷脸入校,默认值 |
library | string | 图书馆刷脸入馆 |
consume | string | 食堂刷脸消费 |
返回参数
data
参数名 | 类型 | 备注 |
---|---|---|
users | object 数组 | 返回的用户 |
thresholds | object | 置信区间, [0,100] 的浮点数,小数点后 3 位有效数字 |
user
参数名 | 类型 | 备注 |
---|---|---|
userId | string | 用户名 |
name | string | 姓名 |
confidence | float | 置信度,[0,100] 区间,小数点后3位有效数字 |
thresholds
参数名 | 类型 | 备注 |
---|---|---|
1e-3 | float | 误识率为千分之一的置信度阈值 |
1e-4 | float | 误识率为万分之一的置信度阈值 |
1e-5 | float | 误识率为十万分之一的置信度阈值 |
请求示例
echo -e {\"image\":\"$(base64 face.jpeg)\"\} > body.json
curl -v -X POST -H "Authorization: Bearer 2c29fb27cfbb3bb88563200ac9c6fa2c" -H "Content-Type:application/json" -d@body.json "https://api.ecnu.edu.cn/api/v1/face/search?scense=gate"
返回示例
{
"errCode": 0,
"errMsg": "success",
"requestId": "b621917e-c297-4a2c-afa5-ecc08cdf3b44",
"data": {
"users": [{
"userId": "20150073",
"name": "冯骐",
"confidence": 99.555
}
],
"thresholds": {
"1e-3": 65.3,
"1e-5": 76.5,
"1e-4": 71.8
}
}
}
授权脸库人员同步
同步已经授权人脸识别的用户名单和照片地址。
请求方法
GET
请求地址
https://api.ecnu.edu.cn/api/v1/face/authorized/users
请求参数
参数名 | 是否必填 | 备注 |
---|---|---|
authorized | 否 | 是否授权 |
scene | 否 | 人脸场景值,默认值为 gate,即大门刷脸入校权限 |
pageNum | 是 | 页码,从1开始 |
pageSize | 是 | 分页数量,最大不可超过1000 |
ts | 是 | 更新时间戳,返回大于此时间戳的人员信息。给0即表示全量同步 |
建议首次以 authorized=true, ts=0
发起同步。后续不传递 authorized
,以 ts
实现增量同步,并根据返回的 authorized
状态去除取消授权的用户。
建议每一段时间(例如每月)执行一次全量同步覆盖数据,以确保数据的准确性。
scene 取值范围
值 | 类型 | 备注 |
---|---|---|
gate | string | 大门刷脸入校,默认值 |
library | string | 图书馆刷脸入馆 |
consume | string | 食堂刷脸消费 |
返回参数
参数名 | 类型 | 备注 |
---|---|---|
totalNum | number | 总共的条目数 |
pageSize | number | 每页的大小 |
rows | object array | 具体的返回 |
userId | string | 用户名 |
name | string | 姓名 |
lastUpdate | number | 最后更新时间,linux时间戳,毫秒。ts 参数将根据此字段值过滤 |
authorized | bool | 是否授权 |
photos | object array | 脸库照片结构体的数组 |
url | string | 照片的路径,将用于后续拼接生成下载地址 |
uploadTime | number | 照片的上传时间,请根据此时间判断是否需要更新照片 |
请求示例
curl -v -H "Authorization: Bearer 2c29fb27cfbb3bb88563200ac9c6fa2c" https://api.ecnu.edu.cn/api/v1/face/authorized/users?authorized=true&pageNum=1&ageSize=10&ts=1635401891000
返回示例
{
"errCode": 0,
"errMsg": "success",
"requestId": "b621917e-c297-4a2c-afa5-ecc08cdf3b44",
"data": {
"rows": [
{
"userId": "10******29",
"name": "测试人员",
"lastUpdate": 1635401891000,
"authorized": true,
"photos": [
{
"url": "d2be39baa**********3f40_face_convert1567308612148.jpg",
"uploadTime": 1635401891000
}
]
}
],
"pageSize": 10,
"totalNum": 1
}
}
获取授权脸库中的用户照片信息
获取授权脸库中的用户照片信息,注意一个用户授权的面部照片可能不止一张。
请求方法
GET
请求地址
https://api.ecnu.edu.cn/api/v1/face/authorized/photo/{userId}/{url}
请求参数
参数名 | 是否必填 | 备注 |
---|---|---|
userId | 是 | 工号 |
url | 是 | 授权用户photos中的url字段内容,注意每个用户可能授权了多个脸部照片 |
返回参数
返回 Content-Type: image/jpeg
的图片
请求示例
curl -H "Authorization: Bearer 2c29fb27cfbb3bb88563200ac9c6fa2c" https://api.ecnu.edu.cn/api/v1/face/authorized/photo/10******29/d2be39baa**********3f40_face_convert1567308612148.jpg > photo.jpg