- IFlyFace
- 概述
IFlyFace
来自于:APICloud立即使用
onlineReg onlineDel onlineVerify onlineDetect onlineDAlign openVideoDetection skipCamera close creatGroup delGroup addToGroup delFromGroup detectN
概述
本模块封装了讯飞SDK的人脸识别功能,人脸识别可以检测出照片或者摄像头中的人脸和关键点,支持多张人脸检测。
为了获得较高的准确率,请确保输入的图片满足以下要求
- 图片为彩色,PNG、JPG、BMP格式的图片
- 图片大小应超过100*100像素,可以允许一定程度的侧脸,为保证识别准确率,最好使用正脸图片。
- 均匀光照,可允许部分阴影。
- 脸部尽量无遮挡,眼镜等物品会一定程度上影响准确率。
注意:所有接口不可同时调用
使用此模块之前必须先配置 config 文件,配置方法如下:
- 名称:IFlyFace
- 参数:appId
- 配置示例:
<feature name="IFlyFace">
<param name="appId" value="123ab67" />
<param name="appId_android" value="123ab67" />
</feature>
【android平台该模块配置】
动态库配置 ——- 附加模块制作
由于科大讯飞的 SDK 是动态生成的。所以需要开发者将动态生成的的 SDK 打包成一个附加自定义模块上传 APICloud 平台。制作方法如下:
下载 iIFlyFaceAppendix模块zip包并解压,将讯飞语音平台sdk中的的Msc.jar和Sunflower.jar放置在解压文件的source下,将sdk中armeabi目录下的的libmsc.so放置在解压文件的target下,重新打包成 iIFlyFaceAppendix.zip文件上传自定义模块,云编译时勾选该模块。
onlineReg
人脸图像注册(reg):上传图像,验证图像的有效性,然后存储起来,作为数据源
onlineReg(params,callback(ret,err))
params
url:
- 类型:字符串类型
- 描述:图片本地路径;支持widget://、fs://
gid:
- 类型:字符串类型
- 描述:人脸模型id ,用于标识用户身份,长度为6-18个字符(由英文字母、数字、下划线组成,不能以数字开头)(仅android需要)
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true //布尔类型;是否注册成功
gid:'' //人脸模型id;status为true返回此字段
}
err:
- 类型:JSON 对象
- 内部字段:
{
code:0 //错误码
msg:'' //错误原因
}
示例代码
var IFlyFace = api.require('IFlyFace');
IFlyFace.onlineReg({
url:''
},function(ret,err){
if (ret.status) {
alert(ret.gid);
} else {
alert(JSON.stringify(err));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
onlineDel
删除已存在人脸模型:根据模型id删除已存在人脸模型(仅支持Android)
onlineDel(params,callback(ret,err))
params
gid:
- 类型:字符串类型
- 描述:已存在模型id
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true //布尔类型;是否注册成功
}
err:
- 类型:JSON 对象
- 内部字段:
{
code:0 //错误码
msg:'' //错误原因
}
示例代码
var IFlyFace = api.require('IFlyFace');
IFlyFace.onlineDel({
url:''
},function(ret,err){
if (ret.status) {
alert(ret.gid);
} else {
alert(JSON.stringify(err));
}
});
可用性
Android系统
可提供的1.0.0及更高版本
onlineVerify
人脸图像验证(verify):通过与指定源图像比较,验证人脸相似性
onlineVerify(params,callback(ret,err))
params
url:
- 类型:字符串类型
- 描述:图片本地路径;支持widget://、fs://
gid:
- 类型:字符串类型
- 描述:人脸模型id
callback(ret,err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true //布尔类型;验证结果, 此字段为判断调用api是否成功;
score:'' //字符类型;分数,分数越高相似度越高;
}
err:
- 类型:JSON 对象
- 内部字段:
{
code:0 //错误码
msg:'' //错误原因
}
示例代码
var IFlyFace = api.require('IFlyFace');
IFlyFace.onlineVerify({
url:'',
gid:''
},function(ret,err){
if (ret.status) {
alert(ret.score);
} else {
alert(JSON.stringify(err));
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
onlineDetect
脸图像检测(detect):能够检测出不同姿态方位的人脸在图中的位置。(仅ios支持)
onlineDetect(params,callback(ret,err))
params
url:
- 类型:字符串类型
- 描述:图片本地路径;支持widget://、fs://
callback(ret,err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true //布尔类型;检测结果
faces:{[{
confidence:10, //置信度
attribute:{
pose:{ //面部朝向
pitch:0
}
},
position:{ //面部的矩形区域
bottom:6,
left:6,
right:6,
top:6,
}
}]}
}
err:
- 类型:JSON 对象
- 内部字段:
{
code:0 //错误码
msg:'' //错误原因
}
示例代码
var IFlyFace = api.require('IFlyFace');
IFlyFace.onlineDetect({
url:'',
},function(ret,err){
if (ret.status) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
iOS系统
可提供的1.0.0及更高版本
onlineAlign
人脸图像聚焦(align):在给定人脸框下自动标定出两眼、鼻尖、嘴角的坐标(仅ios支持)
onlineAlign(params,callback(ret,err))
params
url:
- 类型:字符串类型
- 描述:图片本地路径;支持widget://、fs://
callback(ret,err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true //布尔类型;标定结果
faces:{[
landmark:{ //关键点
left_eye_center:{
x: '209.739',
y: '229.428'
},
left_eye_left_corner: {
x: '177.219',
y: '230.914'
},
left_eye_right_corner: {
x: '235.839',
y: '236.793'
},
left_eyebrow_left_corner: {
x: '155.253',
y: '187.392'
},
left_eyebrow_middle: {
x: '199.240',
y: '182.701'
},
left_eyebrow_right_corner: {
x: '246.582',
y: '192.358'
},
mouth_left_corner: {
x: '204.203',
y: '386.777'
},
mouth_lower_lip_bottom: {
x: '262.768',
y: '416.832'
},
mouth_middle: {
x: '263.705',
y: '390.507'
},
mouth_right_corner: {
x: '317.841',
y: '390.864'
},
mouth_upper_lip_top: {
x: '264.736',
y: '367.996'
},
nose_bottom: {
x: '267.811',
y: '339.358'
},
nose_left: {
x: '225.449',
y: '319.586'
},
nose_right: {
x: '308.086',
y: '323.936'
},
nose_top: {
x: '271.755',
y: '310.934'
},
right_eye_center: {
x: '335.608',
y: '234.335'
},
right_eye_left_corner: {
x: '306.995',
y: '238.703'
},
right_eye_right_corner: {
x: '364.231',
y: '240.307'
},
right_eyebrow_left_corner: {
x: '300.652',
y: '194.243'
},
right_eyebrow_middle: {
x: '347.711',
y: '188.787'
},
right_eyebrow_right_corner: {
x: '391.572',
y: '197.455'
}
}
]}
}
err:
- 类型:JSON 对象
- 内部字段:
{
code:0 //错误码
msg:'' //错误原因
}
示例代码
var IFlyFace = api.require('IFlyFace');
IFlyFace.onlineAlign({
url:'',
},function(ret,err){
if (ret.status) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
iOS系统
可提供的1.0.0及更高版本
openVideoDetection
打开视频检测页面
openVideoDetection(params,callback(ret,err))(仅ios支持)
params
rect:
- 类型:JSON 类型
- 描述:(可选项)预览窗口的位置及大小
- 内部字段:
{
x: 0, //(可选项)数字类型;富文本页面 x 坐标(相对于所属的 Window 或 Frame);默认值:0
y: 0, //(可选项)数字类型;富文本页面 y 坐标(相对于所属的 Window 或 Frame);默认值:0
w: 320, //(可选项)数字类型;富文本页面宽(相对于所属的 Window 或 Frame);默认值:屏幕宽度
h: 300, //(可选项)数字类型;富文本页面高(相对于所属的 Window 或 Frame);默认值:300
}
isDetect:
- 类型:布尔类型
- 描述:(可选项)是否绘制脸部矩形轮廓
- 默认:true
isAlign:
- 类型:布尔串类型
- 描述:(可选项)是否绘制脸部关键点
- 默认:true
color:
- 类型:字符串类型
- 描述:(可选项)检测到人脸时绘画矩形区域和关键点颜色;支持 rgb、rgba、#;isDetect或者isAlign都为false时此字段无效
- 默认:#FF0000
fixedOn:
- 类型:字符串类型
- 描述:(可选项)模块添加到指定 frame 的名字(只指 frame,传 window 无效)
- 默认:模块依附于当前 window
fixed:
- 类型:布尔
- 描述:(可选项)模块是否随所属 window 或 frame 滚动
- 默认值:true(不随之滚动)
callback(ret,err)
ret:
- 类型:JSON 对象
- 注意:detect和align不会同时返回
- 内部字段:
{
status:true //布尔类型;标定结果
faces:{[
position:{ //面部的矩形区域
bottom:6,
left:6,
right:6,
top:6,
},
landmark:{ //关键点
left_eye_center:{
x: '209.739',
y: '229.428'
},
left_eye_left_corner: {
x: '177.219',
y: '230.914'
},
left_eye_right_corner: {
x: '235.839',
y: '236.793'
},
left_eyebrow_left_corner: {
x: '155.253',
y: '187.392'
},
left_eyebrow_middle: {
x: '199.240',
y: '182.701'
},
left_eyebrow_right_corner: {
x: '246.582',
y: '192.358'
},
mouth_left_corner: {
x: '204.203',
y: '386.777'
},
mouth_lower_lip_bottom: {
x: '262.768',
y: '416.832'
},
mouth_middle: {
x: '263.705',
y: '390.507'
},
mouth_right_corner: {
x: '317.841',
y: '390.864'
},
mouth_upper_lip_top: {
x: '264.736',
y: '367.996'
},
nose_bottom: {
x: '267.811',
y: '339.358'
},
nose_left: {
x: '225.449',
y: '319.586'
},
nose_right: {
x: '308.086',
y: '323.936'
},
nose_top: {
x: '271.755',
y: '310.934'
},
right_eye_center: {
x: '335.608',
y: '234.335'
},
right_eye_left_corner: {
x: '306.995',
y: '238.703'
},
right_eye_right_corner: {
x: '364.231',
y: '240.307'
},
right_eyebrow_left_corner: {
x: '300.652',
y: '194.243'
},
right_eyebrow_middle: {
x: '347.711',
y: '188.787'
},
right_eyebrow_right_corner: {
x: '391.572',
y: '197.455'
}
}
]}
}
err:
- 类型:JSON 对象
- 内部字段:
{
code:0 //错误码
msg:'' //错误原因
}
示例代码
var IFlyFace = api.require('IFlyFace');
IFlyFace.openVideoDetection({
rect:{
x: 0,
y: 0,
w: 320,
h: 500,
},
},function(ret,err){
if (ret.status) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
iOS系统
可提供的1.0.0及更高版本
skipCamera
切换摄像头,当前为前摄像头,切换为后摄像头,当前为后摄像头,切换为前摄像头(仅ios支持)
skipCamera()
示例代码
var IFlyFace = api.require('IFlyFace');
IFlyFace.skipCamera();
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
close
关闭视频检测页面
close()(仅ios支持)
示例代码
var IFlyFace = api.require('IFlyFace');
IFlyFace.close();
可用性
iOS系统
可提供的1.0.0及更高版本
creatGroup
创建组(仅支持Android)
创建出来的组用来存放人脸模型,存放多个人脸模型可以用来1:N用来进行一对多人脸校验
creatGroup(params,callback(ret,err))
params
groupName:
- 类型:字符串类型
- 描述:创建的组名
gid:
- 类型:字符串类型
- 描述:已创建人脸模型id
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true //布尔类型;是否创建成功
groupId:'' //字符串类型;组id
}
err:
- 类型:JSON 对象
- 内部字段:
{
code:0 //错误码
msg:'' //错误原因
}
示例代码
var IFlyFace = api.require('IFlyFace');
IFlyFace.creatGroup({
groupName:''
},function(ret,err){
if (ret.status) {
alert(ret.gid);
} else {
alert(JSON.stringify(err));
}
});
可用性
Android系统
可提供的1.0.0及更高版本
delGroup
删除已有组(仅支持Android)
delGroup(params,callback(ret,err))
params
groupId:
- 类型:字符串类型
- 描述:已存在组id
gid:
- 类型:字符串类型
- 描述:人脸模型id
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true //布尔类型;是否删除成功
}
err:
- 类型:JSON 对象
- 内部字段:
{
code:0 //错误码
msg:'' //错误原因
}
示例代码
var IFlyFace = api.require('IFlyFace');
IFlyFace.delGroup({
groupId:''
},function(ret,err){
if (ret.status) {
alert(ret.gid);
} else {
alert(JSON.stringify(err));
}
});
可用性
Android系统
可提供的1.0.0及更高版本
addToGroup
添加人脸模型到指定组(仅支持Android)
addToGroup(params,callback(ret,err))
params
gid:
- 类型:字符串类型
- 描述:人脸模型id
groupId:
- 类型:字符串类型
- 描述:已存在组id
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true //布尔类型;是否添加成功
}
err:
- 类型:JSON 对象
- 内部字段:
{
code:0 //错误码
msg:'' //错误原因
}
示例代码
var IFlyFace = api.require('IFlyFace');
IFlyFace.addToGroup({
gid:'',
groupId:''
},function(ret,err){
if (ret.status) {
alert(ret.gid);
} else {
alert(JSON.stringify(err));
}
});
可用性
Android系统
可提供的1.0.0及更高版本
delFromGroup
人脸模型从指定组移除(仅支持Android)
delFromGroup(params,callback(ret,err))
params
gid:
- 类型:字符串类型
- 描述:人脸模型id
groupId:
- 类型:字符串类型
- 描述:已存在组id
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true //布尔类型;是否删除成功
gid:'' //字符串类型;被移除的id
}
err:
- 类型:JSON 对象
- 内部字段:
{
code:0 //错误码
msg:'' //错误原因
}
示例代码
var IFlyFace = api.require('IFlyFace');
IFlyFace.delFromGroup({
gid:'',
groupId:''
},function(ret,err){
if (ret.status) {
alert(ret.gid);
} else {
alert(JSON.stringify(err));
}
});
可用性
Android系统
可提供的1.0.0及更高版本
detectN
1:N检测(仅支持Android)
detectN(params,callback(ret,err))
params
url:
- 类型:字符串类型
- 描述:图片本地路径;支持widget://、fs://
groupId:
- 类型:字符串类型
- 描述:已存在组id
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:true //布尔类型;是否删除成功
candidates:[] //jsong数组
[{
"model_id":"xxxxxxxx",//模型id
"decision":"accepted",//是否是一个人脸
"score":88.888888,//相似度
"user":"user_name"}]
}
err:
- 类型:JSON 对象
- 内部字段:
{
code:0 //错误码
msg:'' //错误原因
}
示例代码
var IFlyFace = api.require('IFlyFace');
IFlyFace.detectN({
url:'',
groupId:''
},function(ret,err){
if (ret.status) {
alert(ret.gid);
} else {
alert(JSON.stringify(err));
}
});
可用性
Android系统
可提供的1.0.0及更高版本