本文测试了person管理部分,具体的api手册请去官网学习。目标是实现刷脸签到系统。测试功能的源码可以在github上看到https://github.com/luyishisi/The_python_code.git 文件夹是python_face++,测试文件名为test_person.py
创建一个Faceset
一个Faceset最多允许包含10000个Face。
开发版最多允许创建5个Faceset。
参数名 | 参数说明 | |
---|---|---|
必须 | api_key | App的Face++ API Key |
api_secret | APP的Face++ API Secret | |
可选 | faceset_name | Faceset的Name信息,必须在App中全局唯一。Name不能包含^@,&=*'”等非法字符,且长度不得超过255。Name也可以不指定,此时系统将产生一个随机的name。 |
face_id | 一组用逗号分隔的face_id, 表示将这些Face加入到该Faceset中 | |
tag | Faceset相关的tag,不需要全局唯一,不能包含^@,&=*'”等非法字符,长度不能超过255。 |
字段 | 类型 | 说明 |
---|---|---|
added_face | int | 成功加入的face数量 |
tag | string | Faceset相关的tag |
faceset_name | string | 相应Faceset的name |
faceset_id | string | 相应Faceset的id |
# 步骤2:引用face_id,创建新的person,这里原始的文件有错误,在新的官方文档中,person_name该名为,faceset_name
for name, face in FACES.iteritems():
rst = api.person.create(api_key=API_KEY,api_secret=API_SECRET,
face_id = face['face'][0]['face_id'],faceset_name=name)
print_result('create person {}'.format(name), rst)
从运行结果可以看到
返回的数值中,也是一样的字典读取。
值得注意的是为了从for中获取刚刚插入一个人的person_id我是从定义一个全局变量dic从而获取的,
dic={}
# 步骤2:引用face_id,创建新的person,这里原始的文件有错误,在新的官方文档中,perso
for name, face in FACES.iteritems():
rst = api.person.create(api_key=API_KEY,api_secret=API_SECRET,
face_id = face['face'][0]['face_id'],faceset_name=name
p = print_result('create person {}'.format(name), rst)
print('person_id:',rst['person_id'])
dic = rst
print('person_id2:',dic['person_id'])
# 步骤2.1:引用person_id,删除person,j for name, face in FACES.iteritems(): rst = api.person.delete(api_key=API_KEY,api_secret=API_SECRET, person_id = dic[‘person_id’]) print(rst
)
他的返回值会给成功与否的信息
将一组Face加入到一个Person中。
注意,一个Face只能被加入到一个Person中。
一个Person最多允许包含10000个Face。
参数名 | 参数说明 | |
---|---|---|
必须 | api_key | App的Face++ API Key |
api_secret | APP的Face++ API Secret | |
person_name 或 person_id | 相应Person的name或者id | |
face_id | 一组用逗号分隔的face_id,表示将这些Face加入到相应Person中。 |
字段 | 类型 | 说明 |
---|---|---|
added | int | 成功加入的face数量 |
success | bool | 表示操作是否成功 |
这个和之前的差别不大了。不做演示。
参数名 | 参数说明 | |
---|---|---|
必须 | api_key | App的Face++ API Key |
api_secret | APP的Face++ API Secret | |
person_name 或 person_id | 相应Person的name或者id | |
face_id | 一组用逗号分隔的face_id列表,表示将这些face从该Person中删除。开发者也可以指定face_id=all, 表示删除该Person所有相关Face。 |
字段 | 类型 | 说明 |
---|---|---|
removed | int | 成功删除的face数量 |
success | bool | 表示操作是否成功 |
也差不多,主要在于需要列表指定清楚。
应该早点看到这个函数的,这样就不用前面那样全局变量来获取person_id了。
获取一个Person的信息, 包括name, id, tag, 相关的face, 以及groups等信息
参数名 | 参数说明 | |
---|---|---|
必须 | api_key | App的Face++ API Key |
api_secret | APP的Face++ API Secret | |
person_id 或 person_name | 相应Person的id或name |
grouparray含有该Person的Group信息facearray属于该person的face信息
字段 | 类型 | 说明 |
---|---|---|
tag | string | person相关的tag |
person_name | string | 相应person的name |
person_id | string | 相应person的id |
for name, face in FACES.iteritems():
rst = api.person.get_info(api_key=API_KEY,api_secret=API_SECRET,
person_id = dic['person_id'])
p = print_result('create person {}'.format(name), rst)
这里也是先用person_id来进行查询的,反馈的数据是如下:
很简单也类似,不做说明了。
参数名 | 参数说明 | |
---|---|---|
必须 | api_key | App的Face++ API Key |
api_secret | APP的Face++ API Secret | |
person_id 或 person_name | 相应Person的id或name | |
可选 | name | 新的name |
tag | 新的tag |
字段 | 类型 | 说明 |
---|---|---|
tag | string | person相关的tag |
person_name | string | 相应person的name |
person_id | string | 相应person的id |
原创文章,转载请注明: 转载自URl-team
本文链接地址: face++人脸识别与人脸库匹配python实现笔记二