您的位置:首页 > 编程语言 > Java开发

【java】调用百度开发平台ai接口,完成人脸识别(人脸搜索、人脸对比、人脸检测等)功能--------超详细,适合小白

2019-03-21 11:14 267 查看

基本流程理解:
我们要使用百度提供的接口去实现某些功能,大致流程如下:
1.注册百度开放平台帐号;
浏览器打开http://ai.baidu.com/,进入百度ai的页面,点击右上角的控制台按钮进行登录或者注册;
注册就不详解了,相信大家都会,拥有了百度开放平台的帐号之后偶,我们登录进去:

2.创建应用
在右边选择你需要的服务

这里我们以人脸识别这一块为例子,点击进去之后可以在页面看到创建应用的按钮:
进去之后,输入应用名称和应用描述就行了,接口选择这里由默认的,如果西药其他功能也可以自己酌情勾选,
创建好应用之后,我们在应用管理页面可以看到我们刚刚创建好的应用:

这里我们特别注意API Key和Secret Key(Secret Key的值以*隐藏的,我们可以点击后面的显示让他显示出来),这两个码我们在后面会使用,可以先记录下来或者后面再来查看。

3.下载sdk
我们在百度AI的官网上如图操作:

在开发资源导航按钮点击SDK下载,进入sdk下载页面

在左边选择人脸识别,然后在后面对应的语言(java HTTP SDK)进行下载(我们这里是java),点击java对应的后面的下载按钮进行下载。

下载完成之后,我们对下载的压缩文件进行解压,是三个jar包,我们导入我们的项目;

现在可以开始写我们的代码了,代码大致步骤如下:
1.请求指定的url(get方式请求,url后面接上参数,下面详细说);
2.第一步的访问,会返回给我们一个json字符串,其中的access_token很重要;
3.另一个url链接,再加上第二步获取到的access_token值进行访问(post方式,参数放在请求体中);
4.根据第三步url访问,也会返回给我们一个json字符串,这个字符串里面就是我们想要的东西下面详细说明;

注:这里我们可以参考百度ai的开发文档,然后里面有详细的介绍,还有写好的代码,我们可以直接复制,
还是在 百度ai的首页-开发资源导航按钮-文档中心
1.
根据我们的需要,这里选择“人脸识别”,


我们可以看到人脸识别下面由很多功能模块(人脸检测、人脸对比、人脸搜索等),我们这里例子就做人脸对比,所以选择人脸对比栏,我们在右边正文区下翻,翻到代码区域这里,这里由不同的语言写的demo,我们查看java的,

这个java类是用来获取前面说道的access_token的
// 官网获取的 API Key 更新为你注册的
String clientId = “百度云应用的AK”;
// 官网获取的 Secret Key 更新为你注册的
String clientSecret = “百度云应用的SK”;
return getAuth(clientId, clientSecret);

我们可以直接把这个代码复制到我们的项目中就行了(可以新建一个.java文件,把代码放到文件中),修改一下包名,这里填上我们之前在开放平台创建的应用的两个码(API Key 和 Secret Key );
做到这一步,我们可以测试一下了,我们在类中添加一个main方法,然后调用上面复制的这个方法,并且打印出返回值,看看能否成功。

上面这几个步骤,实际上是访问的url:
https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=这里填写你应用的API Key&client_secret=这里填写你应用的Secret Key

访问了这个url之后,会返回给我们一个json字符串,其中的access_token的值我们可以提取出来,后面会用到吗,这里详细说明一下,这个access_token值有效期是30天,所以我们要及时更换,或者每一次调用access_token值都重新执行上面的步骤(获取access_token),这样每次都是重新生成,就不需要30天更换一次了。这里特别注意:我们在提取返回的json字符串的时候,一定不要提取错了,其中第一个键值对和access_token格式很像,我们要提取的键名是access_token,我在这里就入过坑的。

当我们完成上面的步骤之后,能够成功返回json字符串,也能成功提取到access_token值就可以看下面的继续做了。

我们回到开放平台的文档中心,然后继续往下翻,我们翻到请求代码示例这里:


人脸对比的功能是我们上传两张照片,然后可以返回给我们相似度等等数据。
我们再建一个java类,或者直接在刚才的类中再加这个方法,把这个代码复制进去。

这里的流程是:
1.上传本地的图片两张,然后再把图片的文件流转换为base64(这是必须的),然后把转换好的base64编码放入到请求体中(post请求方式),这里都给我们写好了,所以不会写的小伙伴也可以用,如果不会文件上传或者base64编码也没关系,在这个代码中上面注释里写了,四个地址,我们每个都访问一下,就会下载四个工具类(FileUtil,Base64Util,HttpUtil,GsonUtils):
FileUtil.java:是用来上传文件的;
Base64Util:用来转换base64编码的;
HttpUtil:发送http请求的;
GsonUtils:json字符串封装和解封的;


这里是两个图片对比,所以需要两次,FileUtil.readFileByBytes(这里填写你图片的路径“”);


这一步是把我们的请求数据用map封装起来(然后转换为json字符串),后面放入请求体中;image键表示你刚刚转换号的base64码,image_type表示请求的照片格式,这里就填写BASE64,当然也有其他的格式,然后其他的键值对在开放平台的文档中都有详细介绍,这里就不详细说了。

我们看到下面
String result = HttpUtil.post(url, accessToken, “application/json”, param);
这个代码
这个是调用我们刚刚下载的四个工具类中的HttpUtil.java里面的方法进行url访问,
第一个参数url:表示我们请求的地址,在这个类上面已经写好了;
第二个参数accessToken:这里就是我们最开始获取到的access_token值;
第三个参数"application/json”:表示请求方式,我们前面把map封装好了之后通过GsonUtils封装成了json字符串;
第四个参数param:这个就是我们封装好的json字符串。

我们在主方法中调用这个方法,会返给给我们一个json字符串,就是我们想要的值了。
其他操作类似,
就说到这里,大神勿喷 小弟新人

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐