Minos

飞搜安卓SDK轻松上路
yuzhipeng 发表于 1年前  API使用问题

入门安装:

首先点击http://www.faceall.cn/sdk/faceall-sdk-android.zip可以下载飞搜安卓sdk压缩包,并且解压。

1、在eclipse新建工程,工程名的命名要注意与sdk的包结构相同,新建好工程之后,把工程目录下的AndroidManifest.xml和src,res文件夹用sdk中相应AndroidManifest.xml和src,res文件夹替换

demo.jpg

2、打开MainActivity.java文件夹,输入从我们公司获得的api_key和api_secret

private final static String apiKey     = "your api_key";//你的api_key和_secret,请联系我们获得:contact@faceall.cn
private final static String apiSecret  = "your api_secret";
private final static String apiVersion = "v2";

和安卓设备的图片的本地文件路径。

private static final File      FILE1   = new File(Environment.getExternalStorageDirectory() + "your image path"); //手机存储卡路径,如/picture/testPicture1.jpeg

3、点击运行,安卓设备弹出一个send按钮,点击send即可看到所有sdk函数功能调用结果。即sdk运行成功运行。

人脸进阶:

有了基础sdk,就需要明确sdk的使用方法,明确飞搜人脸识别的服务过程:

首先要上传人脸图片,飞搜对上传图片进行人脸检测,返回faceid:

FaMethod famethod          = new FaMethod(apiKey, apiSecret, apiVersion);
JSONObject json1 = famethod.detection_detect(FILE1);
JSONObject json2 = famethod.detection_detect(FILE2);
faceId1 = json1.getJSONArray("faces").getJSONObject(0).getString("id");
faceId2 = json2.getJSONArray("faces").getJSONObject(0).getString("id");

 之后呢可以借助faceid获取图片的人脸属性:

resultObj = famethod.detection_landmark68(faceId1);      //获取人脸68点的landmark
resultObj = famethod.detection_feature(faceId1,"true"); //获取人脸的特征值
feature1 = resultObj.getJSONArray("feature").toString();
resultObj = famethod.detection_attributes(faceId1,"100"); //获取人脸属性,性别,年龄等等
resultArr = famethod.face_get_info(faceId1); //获取所有信息

学会了这些之后,就可以尝试做一些”神奇“的事情,比如两张人脸相似度比较:

resultObj = famethod.recognition_compare_face(faceId1,faceId2);

单张人脸的名人相似度:

resultObj = famethod.recognition_celebrity(faceId1);

ok,对于单张图片的操作如果还有更多的兴趣可以参考飞搜官方api文档 http://www.faceall.cn/documentation.html#v2recognition 

很多时候,需要对于图片集的操作,比如人脸图片分类,人脸图片搜索识别,大规模人脸图像的相似度比较等等。所以接下来介绍faceset的使用。

faceset 人脸集合:

首先要创建一个faceset,并且得到faceset_id:

resultObj  = famethod.faceset_create("test");
faceset_id = resultObj.getString("id");

之后向faceset中添加图片,需要注意的是添加图片是使用face_id的,也就是说要先将图片进行 detection_detect操作,获取图片face_id,才能成功将图片添加进faceset:

JSONObject json1 = famethod.detection_detect(FILE1);
faceId1 = json1.getJSONArray("faces").getJSONObject(0).getString("id");
resultObj = famethod.faceset_add_faces(faceset_id,faceId1);

删除faceset中的图片:

resultObj = famethod.faceset_remove_faces(faceset_id,faceId1);

创建好faceset之后,需要对faceset进行训练,不训练的faceset无法使用:

resultObj = famethod.faceset_train(faceset_id,"");

训练好之后,可以对faceset进行聚类:

resultObj = famethod.recognition_cluster(faceset_id);

测试faceset中与指定人脸的相似度:

resultObj = famethod.recognition_compare_face_faceset(faceId1,faceset_id,"100");

删除faceset:

resultObj = famethod.faceset_delete(faceset_id);

后续支持

飞搜安卓sdk是根据飞搜API进行编写,原理是一致的,欢迎大家直接调用API。

你可以在sdk的MainActivity.java中找到所有的函数调用方式和并且编译获取调用结果,并且根据自己的需要修改sdk。

希望大家能够在使用之后在论坛上提出自己的意见和问题,或者直接与飞搜官方技术支持联系:http://www.faceall.cn


分享到:

  • jianzi 评论于 2015-10-29 12:59:33

    很有用,有更多的landmark点的接口吗?比如180个点

  • yuzhipeng 评论于 2015-10-30 11:53:41

    @jianzi 现在只提供27点和68点的landmark resultObj = famethod.detection_landmark68(faceId1); //68点 resultObj = famethod.detection_landmark(faceId1); //27点


登录以后才可以发表评论~ 点击注册 点击登录

yuzhipeng

太懒,没有留下任何个人说明

微信扫描分享 ×