百度人脸识别sdk-转
https://ai.baidu.com/ai-doc/FACE/Qk37c1mzc
目录
1、简介1.1 产品概述1.2 规格信息1.3 兼容性1.4 授权方式1.5 产品定价 2、SDK详细介绍2.1 名词解释2.2 SDK简介2.3 SDK文件结构2.4 激活工具2.5 Demo示例工程2.6 特征抽取模型选择 3、功能接口3.1 人脸检测及设置3.1.1 人脸检测track接口(传入图片)3.1.2 人脸检测track接口(传入二进制图片buffer)3.1.3 人脸检测track_max_face接口3.1.4 人脸检测track_max_face接口(传入二进制图片buffer)3.1.5 人脸检测设置接口3.1.6 USB摄像头检测3.1.7 人脸检测track接口(传入opencv的mat)3.2 人脸对比及识别接口3.2.1 人脸对比接口3.2.2 人脸对比接口(传入二进制图片buffer)3.3 特征值提取接口3.3.1 特征值提取接口(通过传入图片)3.3.2 特征值提取接口(通过传入二进制图片buffer)3.3.3 特征值提取接口(通过传入opencv的视频帧)3.3.4 特征值比对接口3.4 属性及质量接口3.4.1 人脸属性(通过传入图片)3.4.2 人脸属性(通过传入二进制图片buffer)3.4.3 人脸质量接口(通过传入图片)3.4.4 人脸质量接口(通过传入二进制图片buffer) 4、错误码及错误信息 5、常见问题1、简介
1.1 产品概述
人脸离线识别SDK,包含人脸采集、活体检测、人脸对比/识别、人脸库管理等能力,并全部离线化、本地化。此SDK一经授权激活,可完全在无网环境下工作,所有数据皆在设备本地运行处理,可根据业务需要进行灵活的上层业务开发。核心能力分布如下图所示,后文会详细介绍。
适用场景特点
- 网络:无网、局域网等情况,无法连接公网。如政府单位、金融保险、教育机构等。
- 安全:行业特点所带来的人脸数据敏感性,即使可以连接公网也不可请求。
- 速度:由于各地网络线路、机房部署等诸多原因,网络请求速度存在不可控因素。
- 稳定:需要尽可能避免网络抖动、机房故障等影响,进一步控制可用性影响因素。
1.2 规格信息
- 包大小:~500M
- 最小人脸检测大小:50px * 50px
- 可识别人脸角度:yaw ≤ ±30°, pitch ≤ ±30°
- 检测速度:100ms 720p*
- 追踪速度:30ms 720p*
- 人脸检测耗时:~= 100ms
备注:以上指标,由最新版SDK运行在真实设备上,采用真实数据集所得,但算法性能受实际运行设备、实际数据集等情况影响,以上数字仅供参考。
- 提供一个鉴权激活工具:tool_ubuntu.sh、tool_centos.sh,可根据平台选择对应的sh文件运行
1.3 兼容性
- Centos6.3 gcc4.8.2 以及 Ubuntu16.04 gcc5.4.0上编译
- 推荐基于vs2015进行开发
1.4 授权方式
按设备授权
离线识别SDK授权方式为以设备维度为主,每台硬件设备需要一个独立的授权,此授权的校验是基于设备的硬件指纹(指纹的获取SDK初始化时会自动读取并展示),被授权的设备,将在有效期内可以运行SDK。
重新拉取授权的情况:设备授权不变,仅需要重新激活而已。
- 删除SDK或基于SDK开发的应用
- 重新安装Windows系统
授权失效的情况:需要重新购买序列号,之前的序列号失效。
- 激活一台设备后,此设备硬件变更
- 硬件损坏
序列号
序列号为管理授权的依据。每台被授权的设备,都将对应一个序列号,用于标识对应的设备信息及授权记录。序列号的形式为16位随机英文数字组合,如:3G59-M5JK-889A-7LQA。您在管理后台购买SDK授权时,购买成功后系统将会发放对应数量的序列号。序列号不限制平台版本,任何开发平台的离线SDK,都可以使用此序列号激活。序列号不限制账号,可供任何设备激活使用。
激活
已购买的序列号,是用于激活的唯一凭证,激活流程主要是将序列号与具体的硬件进行绑定(硬件指纹),从而生成对应硬件设备的授权文件(License),SDK运行前,将会校验授权文件是否和实际硬件信息相匹配。
注意:激活时,设备系统时间需要和当前时间一致,如果差距太大(例如偏差5min以上),激活则无法完成。
联网激活
此种激活方式,适用于设备可首次联网的情况,优势在于激活过程极为简单。您只需将SDK安装到需要激活的设备上,然后填写已经购买的序列号,在界面上点击激活即可(为使用方便,我们为您设计了一个简单的激活用户界面)
如激活成功,将会立即在界面上有明确的弹窗提示,请留意查看;如激活失败,也会反馈具体的错误信息。
离线激活
此种激活方式,适用于设备完全不可联网的情况,优势在于可避免联网激活,满足业务对网络的严格要求,以及设备批量注册需求。您需要在后台配置好硬件指纹并完成和序列号的绑定,然后将授权文件放到SDK的指定位置。
授权有效期
申请通过后,每个账户给2个测试序列号,用于激活及SDK试用,有效期为自激活日期后的3个月。这两个序列号在有效期内完全免费,您可以用于进行产品试用。试用期到期后也可以在后台申请延期,填写具体延期理由即可。
正式购买
正式购买的序列号,试用期限为永久有效。此「永久」是指绑定到具体设备维度,但如已绑定的硬件设备变更后,授权则可能会失效。
1.5 定价方式
离线SDK的授权基于设备维度,每个序列号仅可以授权一台设备。每个账号购买的序列号会累计计算,累计购买量越多,单价越便宜。具体如下所示:
| 0~1000 | 299元/个 |
| 1001~5000 | 249元/个 |
| >5000 | 199元/个 |
立即去购买
2、SDK详细介绍
2.1 名词解释
| SDK | Linux离线人脸识别sdk |
| gcc | Linux平台下c++代码编译器 |
| License | 人脸识别激活所需要的激活文件,可利用激活工具生成 |
| key | 人脸激活所需的序列号,可从百度官网申请及购买(ai.baidu.com) |
| feature | 人脸特征值,用来表示人脸特征的512个浮点值 |
| face_token | 对应人脸图片的唯一编码,若一个人上传了2张不同图片,则可能有2个不同的face_token,它和图片一一对应 |
2.2 SDK简介
本SDK适应于Linux(Centos、Ubuntu)平台下的人脸识别系统,分别在Centos6.3 gcc4.8.2 以及Ubuntu16.04 gcc5.4.0上编译(其他版本或平台的linux不保证兼容)。SDK采用动态库so方式提供给开发者,另外随sdk附带一个鉴权激活工具(可运行脚本 tool-ubuntu.sh或tool-centos运行,这2文件分别对应不同的OS),通过该激活工具可生成正常接入SDK的激活license文件(生成两个文件license.ini和license.key)达到通过鉴权,正常使用SDK的目的。
2.3 SDK文件结构
Sdk提供动态库BaiduFaceApi.so及头文件baidu_face_api.h。另外有附带的demo例子代码test-face-api以及鉴权激活工具tool。在此之外,还附带支撑sdk使用的人脸识别模型文件等在文件夹face-resource中,该文件夹在test-face-api例子工程里面(该文件夹存放路径请参考test-face-api,默认存放路径为您要开发的可执行文件路径同一目录下。若存放不对,可能会影响sdk正常使用,另外请勿删除该文件夹)。
为运行您开发的可执行文件,需要用到一些底层的库文件支持,相关库文件在test-face-api的lib3目录中(主要有opencv库,ffmpeg库,json,curl库等)。此外,随工程还有一些编译用的Makefile文件及sh脚本文件等,可通过Makefile编译工程,sh脚本文件运行编译的可执行文件。Makefile文件分别命名为Makefile_centos6.3及Makefile_ubuntu,若要编译相应平台版本,请把他重命名为Makefile。
2.4 激活工具(tool)
在百度官网申请系列号Key后,在test-face-api工程下有个tool_ubuntu.sh和tool_centos.sh。可根据您的OS平台选择对应sh文件运行,在运行之前,先修改脚本文件的最后一行,把如05QU-ATMA-SCWY-CAUB字样的key修改为您在百度官网申请到的key,然后再运行sh脚本文件(若是centos平台,输入sh tool_centos.sh即可)。激活成功后会在激活目录生成license.ini以及license.key文件,这2个文件是作为sdk通过鉴权使用的配置文件,请勿删除。
如果你不方便使用网络,可以通过离线激活进行操作:
通过如上的激活工具,获取到设备指纹信息,通过序列号管理后台找到需要绑定的序列号,选择「离线激活」,填入指纹设备信息,即可下载获取到license.ini文件和license.key文件,把这2个文件拷贝到test-face-api目录下,运行可执行文件亦可通过鉴权。
2.5 Demo示例工程
Demo示例工程代码在test-face-api中的cpp目录里面,其中的test_face.cpp里面有入口方法main(),展示了如何集成百度人脸识别离线SDK。即正确编写Makefile文件及引入头文件include以及对应的一些库文件。另外为了示例视频人脸跟踪等,用到了一些opencv的库文件以及一些实现demo的支持文件,如json等。(这些支持文件均为代码开源或是开源库)
在test-face-api中的test_face.cpp的main()方法中,有使用sdk的各个接口方法示例。接入sdk及其简单,分3步3行代码。如下:
BaiduFace *api = new BaiduFaceApi(); // 第一步:实例化人脸SDKapi->sdk_init(); // 第二步:初始化人脸SDKstd::string res = api->face_attr(“方法的传入参数,此处省略”); // 第三步,调用功能接口,user_add为人脸注册接口,res为调用功能接口后的返回。如上,即为调用sdk功能的最简单3步3行代码,当然调用SDK后,在程序退出后,需要释放sdk防止内存泄漏,需要删除SDK实例化的指针delete api;
示例工程中:分别有以下几个示例cpp文件对应几个常用sdk的调用demo。
| setting.cpp | 人脸检测、识别等参数设置 |
| compare.cpp | 人脸1:1比对、1:N 搜索,人脸特征值提取,特征值对比等 |
| liveness.cpp | USB摄像头视频信息人脸实时检测,图片检测人脸信息等 |
| cv_help.cpp | 绘制人脸跟踪框、人脸关键点位等的工具类 |
2.6 特征抽取模型选择
模型介绍
v1.1版本起,SDK提供生活照和证件照两种特征抽取模型,主要适用场景如下:
- 生活照模型:如手机拍摄的图片、较为清晰的证件照片、USB镜头实时采集的图片、网络摄像头实时采集的图片等。
- 证件照模型:如身份证芯片照、各类证件照(工卡、学生卡、会员卡照片等)、人脸的像素普遍小于80px的图片等。
使用方法
在SDK初始化方法中控制:sdk_init(true); //传入true为使用证件照模型,传入fasle为普通生活照模型
注意事项
温馨提示:一经选择一个模型,则所有业务流程的特征抽取处理,都会使用此模型,两个模型不可同时作用。如业务中设计证件照的特征抽取,请务必选择使用证件照模型。
3、功能接口
SDK实现的主要功能有人脸实时跟踪检测、人脸特征值提取、1:1人脸对比、特征值的比对和通过USB或笔记本自带摄像头检测视频帧,返回识别出的人脸信息等,另外支持对人脸检测进行设置,达到根据设置进行识别的目的。各接口功能及传入参数和返回结果(返回结果一般为json格式的字符串)描述如下:
3.1 人脸检测及设置
3.1.1 人脸检测track接口(传入图片)
方法名
track
方法说明
人脸检测,返回人脸信息
请求信息
| out | 是 | std::vector | 返回的检测到的人脸图片信息结构体 std::vector *& out 通过传入TrackFaceInfo的结构体指针引用,在检测到人脸信息后,用该引用返回人脸信息。TrackedFaceInfo结构体为检测到的人脸信息,其中:box为检测到的人脸框(为FaceInfo结构体,包含人脸框大小,中心点坐标,人脸宽度等信息)landmarks为检测到的人脸关键点,一般为144个。score为人脸打分headPose的向量组为人脸x,y,z的三个角度 |
| image | 是 | string | 人脸图片信息,根据image_type,传入图片内容 |
| img_type | 是 | int | 传入的图片类型。为1时候表示base64编码的图片,为2时候表示传入图片的本地路径。BASE64:图片的base64值;FACE_FILE:图片的本地文件路径地址; |
| maxTrackObjNum | 是 | int | 最多检测人脸数量,默认为1,最大不超过5 |
返回信息
返回结果为int,表示检测到几个人脸信息,1为1个人,0为没检测到人脸。
3.1.2 人脸检测track接口(传入二进制图片buffer)
方法名
track_by_buf
方法说明
人脸检测,返回人脸信息
请求信息
| out | 是 | std::vector | 返回的检测到的人脸图片信息结构体 std::vector *& out 通过传入TrackFaceInfo的结构体指针引用,在检测到人脸信息后,用该引用返回人脸信息。TrackedFaceInfo结构体为检测到的人脸信息,其中:box为检测到的人脸框(为FaceInfo结构体,包含人脸框大小,中心点坐标,人脸宽度等信息)landmarks为检测到的人脸关键点,一般为144个。score为人脸打分headPose的向量组为人脸x,y,z的三个角度 |
| image | 是 | Unsigned char * | 人脸图片信息,二进制图片buffer内容 |
| size | 是 | int | 二进制图片的大小 |
| maxTrackObjNum | 是 | int | 最多检测人脸数量,默认为1,最大不超过5 |
返回信息
返回结果为int,表示检测到几个人脸信息,1为1个人,0为没检测到人脸。
3.1.3 人脸检测track_max_face接口
方法名
track_max_face
方法说明
检测最大人脸。
请求信息
| out | 是 | std::vector<TrackFaceInfo> | 返回的检测到的人脸图片信息结构体 std::vector *& out 通过传入TrackFaceInfo的结构体指针引用,在检测到人脸信息后,用该引用返回人脸信息。TrackedFaceInfo结构体为检测到的人脸信息,其中:box为检测到的人脸框(为FaceInfo结构体,包含人脸框大小,中心点坐标,人脸宽度等信息);landmarks为检测到的人脸关键点,一般为144个;score为人脸打分;headPose的向量组为人脸x,y,z的三个角度 |
| image | 是 | string | 图片信息(数据大小应小于10M) |
| image_type | 是 | int | 为1时候表示base64编码的图片;为2时候表示传入图片的本地路径。BASE64:图片的base64值;FACE_FILE:图片的本地文件路径地址; |
返回信息
返回结果为int,表示检测到几个人脸信息,1为1个人,0为没检测到人脸。
3.1.4 人脸检测track_max_face接口(传入二进制图片buffer)
方法名
track_max_face_by_buf
方法说明
检测最大人脸。
请求信息
| out | 是 | std::vector<TrackFaceInfo> | 返回的检测到的人脸图片信息结构体 std::vector *& out 通过传入TrackFaceInfo的结构体指针引用,在检测到人脸信息后,用该引用返回人脸信息。TrackedFaceInfo结构体为检测到的人脸信息,其中:box为检测到的人脸框(为FaceInfo结构体,包含人脸框大小,中心点坐标,人脸宽度等信息);landmarks为检测到的人脸关键点,一般为144个;score为人脸打分;headPose的向量组为人脸x,y,z的三个角度 |
| image | 是 | Unsigned char * | 人脸图片信息,二进制图片buffer内容 |
| size | 是 | int | 二进制图片的大小 |
返回信息
返回结果为int,表示检测到几个人脸信息,1为1个人,0为没检测到人脸。
3.1.5 人脸检测设置接口
请参考SDK工程中的代码示例及头文件baidu_face_api.h中的定义及setting.cpp里的代码注释。
3.1.6 USB摄像头检测
请参考TestFaceApi中的示例liveness.cpp中的usb_track_face_info,该方法中用到了人脸检测track视频帧,接口如下3.1.7:
3.1.7 人脸检测track接口(传入opencv的mat)
方法名
Track
方法说明
人脸检测,返回人脸信息。
请求信息
| out | 是 | std::vector<TrackFaceInfo> | 返回的检测到的人脸图片信息结构体 std::vector *& out 通过传入TrackFaceInfo的结构体指针引用,在检测到人脸信息后,用该引用返回人脸信息。TrackedFaceInfo结构体为检测到的人脸信息,其中:box为检测到的人脸框(为FaceInfo结构体,包含人脸框大小,中心点坐标,人脸宽度等信息);landmarks为检测到的人脸关键点,一般为144个;score为人脸打分;headPose的向量组为人脸x,y,z的三个角度 |
| Mat | 是 | Opencv格式的单帧图片mat | 人脸图片信息 |
| maxTrackObjNum | 是 | int | 最多检测人脸数量。默认为1,最大不超过5 |
返回信息
返回结果为TrackedFaceInfo的向量指针,向量组为0时候表示没检测到人脸。TrackedFaceInfo结构体为检测到的人脸信息,其中:box为检测到的人脸框(为FaceInfo结构体,包含人脸框大小,中心点坐标,人脸宽度等信息);landmarks为检测到的人脸关键点,一般为144个;score为人脸打分;headPose的向量组为人脸x,y,z的三个角度。
3.2 人脸对比及识别接口
3.2.1 人脸对比接口
方法名
match
方法说明
人脸对比接口(本接口中的image_type为1表示base64图片编码,为2表示文件路径,为3表示face_token)
请求信息
| image1 | 是 | string | 需要对比的第一张图片,小于10M |
| imgae1_type | 是 | int | 图片1类型,必选择以下三种形式之一 BASE64:图片的base64值; FACE_FILE:图片的本地文件路径地址; FACE_TOKEN:face_token 人脸标识; |
| image2 | 是 | string | 需要对比的第二张图片,小于10M |
| image2_type | 是 | int | 图片2类型,必选择以下三种形式之一 BASE64:图片的base64值; FACE_FILE:图片的本地文件路径地址; FACE_TOKEN:face_token 人脸标识; |
返回信息
errno信息:
- errno=0 : Success
- errno>0 : 错误码对应的详细msg
data信息:
| log_id | string | 请求日志标识 |
| result | array | 识别结果列表 |
| score | string | 相似度分值,0-100,百分制,保留后2位小数点 |
3.2.2 人脸对比接口(传入二进制图片buffer)
方法名
match_by_buf
方法说明
人脸对比接口(传入二进制图片buffer)
请求信息
| image1 | 是 | Unsigned char * | 需要对比的第一张图片,小于10M |
| size | 是 | int | 图片1的大小 |
| image2 | 是 | Unsigned char * | 需要对比的第二张图片,小于10M |
| size | 是 | int | 图片2的大小 |
返回信息
errno信息:
- errno=0 : Success
- errno>0 : 错误码对应的详细msg
data信息:
| log_id | string | 请求日志标识 |
| result | array | 识别结果列表 |
| score | string | 相似度分值,0-100,百分制,保留后2位小数点 |
3.3 特征值提取接口
3.3.1 特征值提取接口(通过传入图片)
方法名
get_face_feature
方法说明
提取人脸特征值,为512个浮点值,已加密 (本接口image_type 为1表示base64图片编码 为2表示文件路径)
请求信息
| image | 是 | string | 需要检测的人脸图片,小于10M, 图片类型根据image_type参数定 |
| imgae_type | 是 | int | 图片类型,必选择以下2种形式之一。 image_type为1代表BASE64,为2代表FACE_FILE。 BASE64:图片的base64值; FACE_FILE:图片的本地文件路径地址; |
| feature | 是 | const float* | 通过传入const float*指针的引用,来返回提取的人脸特征值 |
返回信息
errno信息:
- errno=0 : Success
- errno>0 : 错误码对应的详细msg
data信息:
int类型的特征抽取向量数。正常提取成功则返回特征值向量个数(512),若不为512则为返回的错误码.
3.3.2 特征值提取接口(通过传入二进制图片buffer)
方法名
get_face_feature_by_buf
方法说明
提取人脸特征值,为512个浮点值,已加密 (传入二进制图片buffer)
请求信息
| image | 是 | Unsigned char* | 需要检测的人脸图片,小于10M |
| size | 是 | int | 二进制图片大小 |
| feature | 是 | const float* | 通过传入const float*指针的引用,来返回提取的人脸特征值 |
返回信息
errno信息:
- errno=0 : Success
- errno>0 : 错误码对应的详细msg
data信息:
int类型的特征抽取向量数。正常提取成功则返回特征值向量个数(512),若不为512则为返回的错误码.
3.3.3 特征值提取接口(通过传入opencv的视频帧)
方法名
get_face_feature
方法说明
提取人脸特征值,为512个浮点值,已加密 (本接口image_type 为1表示base64图片编码 为2表示文件路径)
请求信息
| Mat | 是 | string | 需要提取特征值的OpenCV视频帧(单帧) |
| feature | 是 | const float* | 通过传入const float*指针的引用,来返回提取的人脸特征值 |
返回信息
errno信息:
- errno=0 : Success
- errno>0 : 错误码对应的详细msg
data信息:
int类型的特征抽取向量数。正常提取成功则返回特征值向量个数(512),若不为512则为返回的错误码.
3.3.4 特征值比对接口
方法名
compare_feature
方法说明
对人脸特征值进行比较,可返回人脸特征相似分值(百分制)
请求信息
| feature1 | 是 | std::vector | 512个浮点型的特征值,传入const的特征值引用 |
| feature2 | 是 | std::vector | 512个浮点型的特征值,传入const的特征值引用 |
返回信息
errno信息:
- errno=0 : Success
- errno>0 : 错误码对应的详细msg
data信息:
相似度结果:float类型,百分制的分值
3.4 属性及质量检测接口
3.4.1 人脸属性(通过传入图片)
方法名
face_attr
方法说明
人脸属性检测接口(本接口 image_type 为1表示base64图片编码 为2表示文件路径)
请求信息
| image | 是 | string | 需要检测的人脸图片,小于10M, 图片类型根据image_type参数定 |
| imgae_type | 是 | int | 图片类型,必选择以下2种形式之一。 Image_type为1代表BASE64为2代表FACE_FILE。 BASE64:图片的base64值; FACE_FILE:图片的本地文件路径地址; |
返回信息
errno信息:
- errno=0 : Success
- errno>0 : 错误码对应的详细msg
data信息:
| age(年龄) | int | 人脸年龄范围0-100,若为-1表示不完整的人脸。 |
| race(种族) | int | 正常人脸标注 0:黄种人 1:白种人 2:黑人 3:阿拉伯人,不完整的人脸标注-1 |
| expression(表情) | int | 0:中性表情,1:微笑,2:大笑 |
| gender(性别) | int | 0: 女 female,1: 男 male,-1: 婴儿或不好辨别性别 |
| glasses(是否戴眼镜) | int | 0:不带眼镜 no glasses,1:普通透明眼镜 glasses,2:太阳镜 sunGlasses |
3.4.2 人脸属性(通过传入二进制图片buffer)
方法名
face_attr_by_buf
方法说明
人脸属性检测接口
请求信息
| image | 是 | unsigned char * | 需要检测的图片,小于10M,二进制图片buffer |
| size | 是 | int | 二进制图片大小 |
返回信息
errno信息:
- errno=0 : Success
- errno>0 : 错误码对应的详细msg
data信息:
| age(年龄) | int | 人脸年龄范围0-100,若为-1表示不完整的人脸。 |
| race(种族) | int | 正常人脸标注 0:黄种人 1:白种人 2:黑人 3:阿拉伯人,不完整的人脸标注-1 |
| expression(表情) | int | 0:中性表情,1:微笑,2:大笑 |
| gender(性别) | int | 0: 女 female,1: 男 male,-1: 婴儿或不好辨别性别 |
| glasses(是否戴眼镜) | int | 0:不带眼镜 no glasses,1:普通透明眼镜 glasses,2:太阳镜 sunGlasses |
3.4.3 人脸质量接口(通过传入图片)
方法名
face_quality
方法说明
人脸质量检测接口
请求信息
| image | 是 | string | 需要检测的人脸图片,小于10M, 图片类型根据image_type参数定 |
| imgae_type | 是 | int | 图片类型,必选择以下2种形式之一。 Image_type为1代表BASE64为2代表FACE_FILE。 BASE64:图片的base64值; FACE_FILE:图片的本地文件路径地址; |
返回信息
errno信息:
- errno=0 : Success
- errno>0 : 错误码对应的详细msg
data信息:
| bluriness | float | 光照 |
| illum | float | 模糊度 |
| occl_l_eye | float | 左眼遮挡度 |
| occl_r_eye | float | 右眼遮挡度 |
| occl_nose | float | 鼻子遮挡度 |
| occl_mouth | float | 嘴巴遮挡度 |
| occl_l_contour | float | 左脸遮挡度 |
| occl_r_contour | float | 右脸遮挡度 |
| occl_chin | float | 下巴遮挡度 |
3.4.4 人脸质量接口(通过传入二进制图片buffer)
方法名
face_quality_by_buf
方法说明
人脸质量检测接口
请求信息
| image | 是 | unsigned char * | 需要检测的图片,小于10M,二进制图片buffer |
| size | 是 | int | 二进制图片大小 |
返回信息
errno信息:
- errno=0 : Success
- errno>0 : 错误码对应的详细msg
data信息:
| bluriness | float | 光照 |
| illum | float | 模糊度 |
| occl_l_eye | float | 左眼遮挡度 |
| occl_r_eye | float | 右眼遮挡度 |
| occl_nose | float | 鼻子遮挡度 |
| occl_mouth | float | 嘴巴遮挡度 |
| occl_l_contour | float | 左脸遮挡度 |
| occl_r_contour | float | 右脸遮挡度 |
| occl_chin | float | 下巴遮挡度 |
4、错误码及错误信息
| 0 | SUCCESS | 成功 |
| 1 | SYSTEM ERROR | 系统错误 |
| 2 | UNKNOWN ERROR | 未知错误 |
| 1001 | NOT_AUTH | 授权校验失败 |
| 1002 | REQUEST PARAMS ERROR | 请求参数错误 |
| 1003 | DB_OP_FAILED | 数据库操作失败 |
| 1004 | NO_DATA | 没有数据 |
| 1005 | RECORD_UNEXIST | 记录不存在 |
| 1006 | RECORD_ALREADY_EXIST | 记录已经存在 |
| 1007 | FILE_NOT_EXIST | 文件不存在 |
| 1008 | GET_FEATURE_FAIL | 提取特征值失败 |
| 1009 | FILE_TOO_BIG | 文件太大 |
| 1010 | FACE_RESOURCE_NOT_EXIST | 人脸资源文件不存在 |
| 1011 | FEATURE_LEN_ERROR | 特征值长度错误 |
| 1012 | DETECT_NO_FACE | 未检测到人脸 |
5、常见问题
Q:激活工具激活时候,提示timeout或者unsupport protocl
A:若提示timeout,请确认设备是否能联网;若提示unsupport protocl,请确认是否安装了openssl。
Q:工程运行过程中,提示face-resource不存在
A:SDK需要一些模型文件,在demo工程的face-resource文件夹中,该文件夹需要放置在exe所在路径的上级目录下。若放置不正确,可能出现找不到模型文件,没法进行人脸识别。
Q:工程激活过程中,提示segment fault
A:这是因为工程若没有激活,便直接执行脚本文件运行可执行文件,请先完成激活操作。
Q:激活后是否可以把激活文件license.ini和license.key拷贝到其他设备运行?
A:不能,离线sdk和设备绑定,每个设备对应一个key和一个license文件,换设备无法运行。
总结
以上是生活随笔为你收集整理的百度人脸识别sdk-转的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 调用百度的人脸识别SDK实现人脸检测
- 下一篇: V831 人脸识别