藉助百度雲中的百度人臉識別用Java開發一個人臉識別
效果可以微信掃一掃檢視
Java呼叫百度的介面。
示例工程也都是呼叫介面的程式碼
不知道為什麼好多人說看不懂
前提是自己會Java。知道JSON HTTP
程式碼報錯看看JDK有沒有替換成自己本地
demo可以看我的微信小程式。裡面是用的騰訊優圖和百度人臉檢測2個介面
連結的程式碼是完整的。謝謝
程式碼下載地址 http://download.csdn.net/download/u010651369/10117269
連結: https://pan.baidu.com/s/1ht3H9pq 密碼: uxxf 示例專案下載地址
想看作者做的功能效果。可以掃上面的碼在小程式檢視或者訪問
1.官網文件必須看
2.在管理中心建立應用及檢視相關引數 AppID APIKey SecretKey都需要儲存起來
3.搬磚測試
專案需要的lib包,基本下載官網的SDK就都會包含。
package com.xs.demo.common;
//相關的必要引數可以儲存到常量
public class APIConstants {
//百度人臉識別應用id
public static final String APPID = "管理中心獲得";
//百度人臉識別應用apikey
public static final String API_KEY = "管理中心獲得";
//百度人臉識別應用sercetkey
public static final String SERCET_KEY = "管理中心獲得";
//百度人臉識別token 有效期一個月
public static final String TOKEN = "為了測試,將生成的key先存一下";
}
4.獲取AccessToken
官網文件說明http://ai.baidu.com/docs#Beginner-Auth
向授權服務地址https://aip.baidubce.com/oauth/2.0/token
傳送請求(推薦使用POST),並在URL中帶上以下引數:
- grant_type: 必須引數,固定為“client_credentials”;
- client_id: 必須引數,應用的API Key;
- client_secret: 必須引數,應用的Secret Key;
直接在瀏覽器GET請求也可以獲取:
https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=APIKEY&client_secret=SECRETKEY
//獲取AccessToken 有效期一個月
public class AITest {
public static void main(String[] args) throws Exception {;
String access_token_url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials" +
"&client_id="+APIContants.API_KEY
+"&client_secret="+ APIContants.SERCET_KEY;
HttpResponse response = HttpUtils.doPostBD(access_token_url,new HashMap<String, String>(),new HashMap<String, String>());
System.out.println(EntityUtils.toString(response.getEntity()));
}
}
//返回的JSON資料。只需要access_token即可
{"access_token":"24.39b6fc97e87058ed6edb92ad68782c29.2592000.1492651482.11111-11111","session_key":"9mzdCP1XKXZ5yipkl7ubftudl2reGQybIG25NqWi9vqeSFFjxigLFl+WpfDW0PyUt7EP\/Uyn74r31lj3d4kVr4xkbkSk","scope":"public vis-faceverify_faceverify vis-faceattribute_faceattribute wise_adapt lebo_resource_base lightservice_public hetu_basic lightcms_map_poi kaidian_kaidian wangrantest_test wangrantest_test1 bnstest_test1 bnstest_test2 ApsMisTest_Test\u6743\u9650 vis-classify_flower","refresh_token":"25.3c8370eaeb8af4f8367a38b6dbefcef9.315360000.1805419482.11111-11111","session_secret":"ff06850552b385cff19de958e435e6a4","expires_in":2592000}
5.HttpUtils工具類程式碼
package com.xiaoshuai.baidu.util;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;
/**
* http 工具類
*/
public class HttpUtil {
public static String post(String requestUrl, String accessToken, String params) throws Exception {
String generalUrl = requestUrl + "?access_token=" + accessToken;
URL url = new URL(generalUrl);
// 開啟和URL之間的連線
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
// 設定通用的請求屬性
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setUseCaches(false);
connection.setDoOutput(true);
connection.setDoInput(true);
// 得到請求的輸出流物件
DataOutputStream out = new DataOutputStream(connection.getOutputStream());
out.writeBytes(params);
out.flush();
out.close();
// 建立實際的連線
connection.connect();
// 獲取所有響應頭欄位
Map<String, List<String>> headers = connection.getHeaderFields();
// 遍歷所有的響應頭欄位
for (String key : headers.keySet()) {
System.out.println(key + "--->" + headers.get(key));
}
// 定義 BufferedReader輸入流來讀取URL的響應
BufferedReader in = null;
if (requestUrl.contains("nlp"))
in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "GBK"));
else
in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
String result = "";
String getLine;
while ((getLine = in.readLine()) != null) {
result += getLine;
}
in.close();
System.out.println("result:" + result);
return result;
}
}
6.檢測人臉美醜及年齡
http://ai.baidu.com/docs#FACE官網文件
請求引數
是否必選 | 型別 | 說明 | |
---|---|---|---|
image | 是 | string | base64編碼後的圖片資料,圖片大小不超過2M。 |
max_face_num | 否 | uint32 | 最多處理人臉數目,預設值1 |
face_fields | 否 | string | 包括age,beauty,expression,faceshape,gender,glasses,landmark,race,qualities資訊,逗號分隔,預設只返回人臉框、概率和旋轉角度。 |
-
URL引數:
引數 | 值 |
---|---|
access_token | 通過API Key和Secret Key獲取的access_token,參考“Access Token獲取” |
- Header如下:
引數 | 值 |
---|---|
Content-Type | application/x-www-form-urlencoded |
- Body中資料如下:
引數 | 值 |
---|---|
image | 影象base64編碼 |
max_face_num | 非必填,預設1 |
face_fields | 非必填 |
API呼叫方式
package com.xiaoshuai.test;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.HashMap;
import org.json.JSONObject;
import com.baidu.aip.face.AipFace;
import com.baidu.aip.http.AipRequest;
public class Test {
public static void main(String[] args) throws Exception {
/****************/
String Filepath = "G:/test2.jpg";
String image = Base64Util.encode(FileUtil.readFileByBytes(Filepath));
String url = "https://aip.baidubce.com/rest/2.0/face/v1/detect";
String params = URLEncoder.encode("image", "UTF-8") + "=" + URLEncoder.encode(image, "UTF-8")+"&face_fields=age,beauty,expression,gender,glasses,race,qualities";
try {
HttpUtil httpUtil = new HttpUtil();
String result = httpUtil.post(url, "你自己獲取的accessToken", params);
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
}
}
7.返回JSON字串內容
age 年齡 (目前官網還是沒有說明年齡的誤差範圍)
beauty 美醜分數 0-100 越大值越美(之前官網寫的是0-1在我發現錯誤時,提交官網,官網及時做了修改)
如花識別年齡38 美醜評分21 表示不太合理
{
"result": [{
"expression": 0,
"face_probability": 1,
"glasses": 0,
"location": {
"height": 155,
"width": 136,
"left": 103,
"top": 49
},
"beauty": 21.201513290405,
"race": "yellow",
"expression_probablity": 0.77510279417038,
"rotation_angle": 9,
"yaw": 2.6519072055817,
"roll": 10.0813331604,
"qualities": {
"completeness": 0,
"occlusion": {
"left_eye": 0,
"chin": 0,
"mouth": 0,
"right_cheek": 0,
"left_cheek": 0,
"nose": 0,
"right_eye": 0
},
"blur": 0,
"type": {
"cartoon": 0.0060238856822252,
"human": 0.99397611618042
},
"illumination": 0
},
"gender_probability": 0.93728905916214,
"age": 37.866649627686,
"gender": "male",
"glasses_probability": 0.99999260902405,
"race_probability": 0.99436098337173,
"pitch": -17.080112457275
}],
"result_num": 1,
"log_id": 2045651588
}
8.SDK呼叫
/**
* 基於百度SDK提供的方法進行呼叫
* @author 小帥帥丶
* @date 2017-3-20下午06:00:05
*/
public class Sample {
public static void main(String[] args) {
//初始化一個FaceClient
AipFace face = new AipFace("appid","apikey","secretkey");
//可選:設定網路連線引數
face.setConnectionTimeoutInMillis(60000);
face.setSocketTimeoutInMillis(60000);
//呼叫API
HashMap map = new HashMap();
//
map.put("face_fields", "age,beauty,expression,gender,glasses,race,qualities");
String path = "G:/test2.jpg";
AipRequest aipRequest = new AipRequest();
aipRequest.setBody(map);
JSONObject result = face.detect(FileUtil.readFileByBytes(path),map);
System.out.println(result.toString(2));
}
}
以上就是百度人臉識別API的呼叫測試流程及demo
阿里雲人臉識別API內容很少。返回只有簡單的資料。不如百度的全面。
還有一點。
阿里雲的是1分錢購買。 100000一共就這麼多請求次數。
百度不要錢,按天算請求次數。但是不保證併發。
綜上百度API可以考慮入手學習一下。絕非廣告。
開源中國與CSDN是同一個博主不存在轉載哦
http://ai.baidu.com/forum 想了解。可以去百度的論壇諮詢
不會Java就沒必要加QQ問了
QQ:783021975
相關推薦
藉助百度雲中的百度人臉識別用Java開發一個人臉識別
效果可以微信掃一掃檢視 Java呼叫百度的介面。 示例工程也都是呼叫介面的程式碼 不知道為什麼好多人說看不懂 前提是自己會Java。知道JSON HTTP 程式碼報錯看看JDK有沒有替換成自己本地 demo可以看
分享百度雲鏈接 Python 3網絡爬蟲開發實戰 ,崔慶才著
51cto 開發實戰 c4c oss tps ces 技術 分享 col 分享百度雲鏈接 Python 3網絡爬蟲開發實戰 ,崔慶才著 百度雲鏈接: https://pan.baidu.com/s/1cIB7etdwh8_eybTiatDbQQ分享百度雲鏈接 Python
結合百度雲平臺和微信公眾平臺進行開發(一)
套話大話我就不說了,網上一大堆,我們就直接進入正題吧,相信對百度雲平臺和微信公眾平臺沒有了解的也不會關注這篇文章。 上面的標題到底是個什麼意思呢?下面讓我們一步一步來完成一個測試小專案。 兩者是怎樣結合的? 利用百度雲平臺執行我們自己的服務端專案,在平臺上線執行。利
五:用JAVA寫一個阿裏雲VPC Open API調用程序
外部jar包 ef7 dac java 方式 命令 pro ng- 自動化管理 用JAVA寫一個阿裏雲VPC Open API調用程序 摘要:用JAVA拼出來Open API的URL 引言 VPC提供了豐富的API接口,讓網絡工程是可以通過API調用的方式
關於命令列中javac 編譯成功,用 java 執行 class 檔案出現 “ 找不到或無法載入主類 ” 的問題
javac編譯成功,用java執行class檔案出現“找不到或無法載入主類”的問題所在 學習android,順便又學習下java. 在這裡推薦Mars老師的視訊,很好用,無論是Java4Android還是Android開發系列視訊教程都很好http://www.marschen.com/ 入門就遇到這樣的問
用Java設計一個程式,找到一個字串中對稱字串的個數【面試題】
題目要求: 用Java設計一個程式,實現一個字串的對稱個數,如字串"effeghg",有"ff","effe","ghg"這三個對稱字元,所以返回3. 我實現的思路就是遍歷這個字串, 先選定頭位置為第一個字元,然後從最後向前遍歷這個字串, 頭尾兩個字元相同,則取中間字串,
Hive中LIKE查詢使用萬用字元'%'的一個BUG--當轉義符'\'遇到萬用字元'%'或'_'
在Hive開發過程中遇到這樣一個問題: 例如表T001的欄位col1裡面存有’ABC\DEF’這樣的資料,在Oracle中,我可以通過下面這樣的SQL將其查出: SELECT * FROM T001 WHERE COL1 LIKE ‘ABC\%’; ‘\’不會將’%’進行轉
百度雲架構師在職場中的忠告
1.工具不能代替思考 在我多年的諮詢工作和與許多組織和管理者的共事中,我發現了修復問題的共同套路,那就是管理人員相信工具可以“解決”給出的問題。當問題域被理解透徹,並且不可能有很多例外,以及每個人的行為方式相同的時候,這樣的做法很管用。不幸的是,很多現實問題並非如此。
樹莓派+百度雲打造人臉識別門禁系統
先註冊一個百度雲賬號: 然後點選左上角的百度雲進入首頁: 在首頁中選擇產品,人工智慧,人臉識別,點選進入: 選擇立即使用: 在以下頁面中由於沒用應用,因此點選建立應用,然後直接寫上應用名和應用描述就行了,人臉識別的功能都全部預設有了,由於我已經建立好了,因此我點選管
微信小程式(利用百度雲後臺進行人臉識別)
takePhoto() { const ctx = wx.createCameraContext() ctx.takePhoto({ quality: 'high', success: (res) => { t
百度雲人臉識別- 獲取token+輸出圖片人臉檢測的資訊
使用thinkPHP框架 來獲取人臉識別的token。在application中的common中新建一個function.php/獲取access_token function request_post($url = '', $param = '') {
古董局中局百度雲網盤資源連結全集分享
古董局中局百度雲 http://www.whqfd.com/news/hangye/421.html 古董局中局點評一口氣看了三集,只能說小說畢竟第一人稱,改編成影視劇上帝視角肯定有一些東西要省略了,這是沒辦法的,但是盡所能的改得合理。劇情絲絲入扣,節奏明快鮮明,演員演技全員線上。給片方點贊,每出現一個古
百度雲人臉識別獲取access_token
最近在做人工智慧人臉識別的小程式,每張照片都應有一個唯一的字串。這裡我們採用guid來生成唯一的字串。// 生成guid function guid(){ if (function_exists('com_create_guid')) { return
百度雲虛擬主機中的網站不能載入靜態js、css和images等檔案的解決方案
百度雲虛擬主機下配置個人網站不能載入靜態js、css和images等檔案時,需要在webroot(網站根目錄)下建立bcloud_nginx_user.conf,在這個檔案裡面設定載入靜態檔案資源。 為什麼要配置這個檔案呢?因為虛擬主機預設採用了動態配置資源的方式,如果要載
如何使用百度雲人臉識別服務(V3版介面python語言)(二)初識SDK
上次我們講到了如何新建一個面部識別的應用,現在我們就可以開始使用這個服務了 下載SDK有多種方法,我就不多說,提供一種最簡單的方法:直接使用pip安裝 開啟Windows的cmd(命令提示符) 輸入 pip ins
ASP.NET MVC5 中百度ueditor富文本編輯器的使用
編譯時間 文本編輯器 ida height git aid asp ueditor jquery 隨著網站信息發布內容越來越多,越來越重視美觀,富文本編輯就是不可缺少的了,眾多編輯器比較後我選了百度的ueditor富文本編輯器。 百度ueditor富文本編輯器分為兩種一種
Android推送 百度雲推送 入門篇
cep 控制臺 通過 esc port key 開發 manage class 轉載請標明出處:http://blog.csdn.net/lmj623565791/article/details/27231237如今app基本都有推送的功能。於是看了下百度雲的推送,官方文
《CDH集群搭建視頻資料》百度雲網盤下載
百度 eight 鏈接 百度雲 bsp col 密碼 tar 視頻資料 《CDH集群搭建視頻資料》百度雲下載 鏈接: http://pan.baidu.com/s/1i5DVBlb 密碼:2mny《CDH集群搭建視頻資料》百度雲網盤下載
新浪雲、阿裏雲、百度雲、谷歌雲、亞馬遜雲
存在 實現 常用 sof ava 解決 http 只需要 產品 新浪雲:http://sae.sina.com.cn/ 阿裏雲:http://www.aliyun.com/百度雲:http://yun.baidu.com/谷歌雲:https://developers.go
SQLyog簡介及其功能(附百度雲盤下載地址)
++ 基本 記錄 導出 對數 簡介 sam 接口 管理 一、軟件簡介 SQLyog 是一個快速而簡潔的圖形化管理MYSQL數據庫的工具,它能夠在任何地點有效地管理你的數據庫。SQLyog是業界著名的Webyog公司出品的一款簡潔高效、功能強大的圖形化MySQL數據庫管