前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AI识别之旅三

AI识别之旅三

原创
作者头像
谭广健
修改2020-02-27 18:26:15
5310
修改2020-02-27 18:26:15
举报
文章被收录于专栏:谭广健的专栏谭广健的专栏

前两篇说了AI识别的准备和录入到腾讯云里,接下来我们就来编写一个从人脸库进行识别的功能,老样子那第一篇摄像头那里拉图片。因为有第二篇拉依赖库,这里就不在叙述了。直接来代码了。。

public static String Find_Person(String GroupId,String IMG_Base64){
    String Return_str="";
    try
    {
     Credential cred = new Credential(SecretId, SecretKey);
    HttpProfile httpProfile = new HttpProfile();
    httpProfile.setEndpoint("iai.tencentcloudapi.com");
    ClientProfile clientProfile = new ClientProfile();
    clientProfile.setHttpProfile(httpProfile);
    IaiClient client = new IaiClient(cred, "", clientProfile);
    String params = "{\"GroupIds\":[\""+GroupId+"\"],\"Image\":\""+IMG_Base64+"\",\"MaxPersonNum\":1}";
    SearchFacesRequest req = SearchFacesRequest.fromJsonString(params, SearchFacesRequest.class);
    SearchFacesResponse resp = client.SearchFaces(req);
    Return_str=CreatePersonRequest.toJsonString(resp);
} catch (TencentCloudSDKException e) {
    Return_str="error";
}
    return Return_str;
}

这个就是根据输入的数据进行查询的。

如果正常,返回的将是多长JSON数据

"{\"FaceModelVersion\":\"3.0\",\"FaceNum\":8,\"RequestId\":\"ec774481-52ac-4cbb-9d6a-11c35503da09\",\"Results\":[{\"Candidates\":[{\"FaceId\":\"3525893998528970078\",\"PersonId\":\"20200227094052\",\"Score\":100.0}],\"FaceRect\":{\"Height\":262,\"Width\":190,\"X\":321,\"Y\":24},\"RetCode\":0}]}";

先判断RetCode是否为0,0为正常的,不是0则自己去查吧,为0然后再查Results下的Candidates,我这里为了尽可能简单,就放1条记录,然后Score就是匹配度,PersonId就是返回的人员ID。

至此,我们就完成简单的AI识别功能人员。最后放出解释多层JSON的代码吧。。。

JsonObject jsonObject =(JsonObject) new JsonParser().parse(JSON);//取原始层
String data = jsonObject.get("Results").toString().replace("[","").replace("]","");//取掉外层
JsonObject Results_obj =(JsonObject) new JsonParser().parse(data);//再转Results层
String RetCode=Results_obj.get("RetCode").toString();//拿到RetCode=0表示正常

String Candidates=Results_obj.get("Candidates").toString();//拿到Candidates
JsonObject Score_obj =(JsonObject) new JsonParser().parse(Candidates);//再转Candidates
String Score=Score_obj.get("Score").toString();

应该可以更简单的,但暂时就这样。。青山不改,绿水长流,后会有期。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档