Face++ 官网 http://www.faceplusplus.com.cn/
11.jpg
import java.nio.charset.Charset;
import java.util.ArrayList;
import org.json.JSONException;
import org.json.JSONObject;
import com.facepp.error.FaceppParseException;
import com.facepp.http.HttpRequests;
import com.facepp.http.PostParameters;
/*
* 先识别了一张照片,得出3个人脸,然后创建了3个Person,把这些人脸加入到对应的Person中,再把这些Person加入一个Group中。
* 通过调用train和recognition来演示人脸识别API。最后删除了创建的Person
*/
public class Test {
public static void main(String[] args) {
//初始化函数HttpRequests,传入四个参数依次是API_Key,API_Secret,是否使用CN服务器,是否使用HTTP模式连接。
//replace api_key and api_secret here (note)
HttpRequests httpRequests = new HttpRequests("your APIkey", "your API Secret", true, true);
JSONObject result = null;
try {
System.out.println(Charset.forName("UTF-8").name());
System.out.println("FacePlusPlus API Test:");
//detection/detect
//识别图片
result = httpRequests.detectionDetect(new PostParameters().setUrl("http://cn.faceplusplus.com/wp-content/themes/faceplusplus/assets/img/demo/11.jpg"));
System.out.println(result);
System.out.println(result.getJSONArray("face").getJSONObject(0).getJSONObject("position").getJSONObject("center"));
//创建Person,通过personAddFace添加人脸,通过setPersonName添加中文姓名,最后通过personGetInfo得到每一个Person的信息输出。
//-----------------Person-----------------
//person/create
System.out.println("\nperson/create");
for (int i = 0; i < result.getJSONArray("face").length(); ++i)
System.out.println(httpRequests.personCreate(new PostParameters().setPersonName("person_n"+i)));
new PostParameters().setPersonName("person_n"+0).setFaceId(
result.getJSONArray("face").getJSONObject(0).getString("face_id")).getMultiPart().writeTo(System.out);
//person/add_face
System.out.println("\nperson/add_face");
for (int i = 0; i < result.getJSONArray("face").length(); ++i)
System.out.println(httpRequests.personAddFace(new PostParameters().setPersonName("person_n"+i).setFaceId(
result.getJSONArray("face").getJSONObject(i).getString("face_id"))));
//person/set_info
System.out.println("\nperson/set_info");
for (int i = 0; i < result.getJSONArray("face").length(); ++i) {
new PostParameters().setPersonName("person_n"+i).setTag("china tag_"+i).getMultiPart().writeTo(System.out);
System.out.println(httpRequests.personSetInfo(new PostParameters().setPersonName("person_n"+i).setTag("china tag_"+i)));
}
//person/get_info
System.out.println("\nperson/get_info");
for (int i = 0; i < result.getJSONArray("face").length(); ++i)
System.out.println(httpRequests.personGetInfo(new PostParameters().setPersonName("person_n"+i)));
//创建Faceset,此处和创建Person基本一致。
//-----------------Faceset-----------------
//faceset/create
System.out.println("\nfaceset/create");
for (int i = 0; i < result.getJSONArray("face").length(); ++i)
System.out.println(httpRequests.facesetCreate(new PostParameters().setFacesetName("faceset_n"+i)));
//faceset/add_face
System.out.println("\nfaceset/add_face");
for (int i = 0; i < result.getJSONArray("face").length(); ++i)
System.out.println(httpRequests.facesetAddFace(new PostParameters().setFacesetName("faceset_n"+i).setFaceId(
result.getJSONArray("face").getJSONObject(i).getString("face_id"))));
//faceset/set_info
System.out.println("\nfaceset/set_info");
for (int i = 0; i < result.getJSONArray("face").length(); ++i) {
new PostParameters().setFacesetName("faceset_n"+i).setTag("china tag_"+i).getMultiPart().writeTo(System.out);
System.out.println(httpRequests.facesetSetInfo(new PostParameters().setFacesetName("faceset_n"+i).setTag("china tag_"+i)));
}
//faceset/get_info
System.out.println("\nfaceset/get_info");
for (int i = 0; i < result.getJSONArray("face").length(); ++i)
System.out.println(httpRequests.facesetGetInfo(new PostParameters().setFacesetName("faceset_n"+i)));
//创建一个Group,把所有Person加入到Group中去。
//-----------------Group-----------------
//group/create
System.out.println("\ngroup/create");
System.out.println(httpRequests.groupCreate(new PostParameters().setGroupName("group0")));
//group/add_person
System.out.println("\ngroup/add_person");
ArrayList<String> personList = new ArrayList<String>();
for (int i = 0; i < result.getJSONArray("face").length(); ++i)
personList.add("person_n"+i);
new PostParameters().setGroupName("group0").setPersonName(personList).getMultiPart().writeTo(System.out);
System.out.println(httpRequests.groupAddPerson(new PostParameters().setGroupName("group0").setPersonName(personList)));
//group/set_info
System.out.println("\ngroup/set_info");
System.out.println(httpRequests.groupSetInfo(new PostParameters().setGroupName("group0").setTag("group tag")));
//group/get_info
System.out.println("\ngroup/get_info");
System.out.println(httpRequests.groupGetInfo(new PostParameters().setGroupName("group0")));
//通过trainIdentify建立人脸标识模型,再通过trainVerify建立人脸验证模型。
//-----------------Recognition-----------------
//recognition/train
JSONObject syncRet = null;
System.out.println("\ntrain/Identify");
syncRet = httpRequests.trainIdentify(new PostParameters().setGroupName("group0"));
System.out.println(syncRet);
System.out.println(httpRequests.getSessionSync(syncRet.getString("session_id")));
System.out.println("\ntrain/verify");
for (int i = 0; i < result.getJSONArray("face").length(); ++i) {
syncRet = httpRequests.trainVerify(new PostParameters().setPersonName("person_n" + i));
System.out.println(httpRequests.getSessionSync(syncRet.get("session_id").toString()));
}
//recognition/recognize
System.out.println("\nrecognition/identify");
System.out.println(httpRequests.recognitionIdentify(
new PostParameters().setGroupName("group0").setUrl("http://cn.faceplusplus.com/wp-content/themes/faceplusplus/assets/img/demo/5.jpg")));
//recognition/verify
System.out.println("\nrecognition/verify");
System.out.println(
httpRequests.recognitionVerify(new PostParameters().setPersonName("person_n0").setFaceId(
result.getJSONArray("face").getJSONObject(0).getString("face_id"))));
System.out.println(
httpRequests.recognitionVerify(new PostParameters().setPersonName("person_n1").setFaceId(
result.getJSONArray("face").getJSONObject(0).getString("face_id"))));
//-----------------Info-----------------
//info/get_app
System.out.println("\ninfo/get_app");
System.out.println(httpRequests.infoGetApp());
//info/get_face
System.out.println("\ninfo/get_app");
System.out.println(httpRequests.infoGetFace(new PostParameters().setFaceId(
result.getJSONArray("face").getJSONObject(0).getString("face_id"))));
//info/get_group_list
System.out.println("\ninfo/get_group_list");
System.out.println(httpRequests.infoGetGroupList());
//info/get_image
System.out.println("\ninfo/get_image");
System.out.println(httpRequests.infoGetImage(new PostParameters().setImgId(
result.getString("img_id"))));
//info/get_person_nlist
System.out.println("\ninfo/get_person_nlist");
System.out.println(httpRequests.infoGetPersonList());
//info/get_quota
System.out.println("\ninfo/get_quota");
System.out.println(httpRequests.infoGetQuota());
//info/get_session
System.out.println("\ninfo/get_session");
System.out.println(httpRequests.infoGetSession(new PostParameters().setSessionId(
result.getString("session_id"))));
//-----At last----
//person/remove_face
System.out.println("\nperson/remove_face");
System.out.println(httpRequests.personRemoveFace(
new PostParameters().setPersonName("person_n0").setFaceId(
result.getJSONArray("face").getJSONObject(0).getString("face_id"))));
//group/delete
System.out.println("\ngroup/delete");
System.out.println(httpRequests.groupDelete(new PostParameters().setGroupNam