人臉識別用來測顏值(一)
1.依賴百度AI人臉識別,瀏覽一下工程目錄
pojo:存放的實體類
draw:程式的主要方法
test:測試介面的能力
utils:工具類
進入百度ai檢視介面
根據圖片可以推算人的年齡,性別等屬性還可以檢測狀態是否戴眼鏡,光照等資訊。
測試方法:本地上傳t圖片到百度伺服器,返回一個json字串,解析得到資料,因此這個過程需要連線網路。
開始測試,首先下載相應的sdk壓縮包匯入到工程裡面
package test;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;
/**
* 獲取token類
*/
public class AuthService {
public static void main(String[] args) {
System.out.println(AuthService.getAuth());
}
/**
* 獲取許可權token
* @return 返回示例:
* {
* "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567",
* "expires_in": 2592000
* }
*/
public static String getAuth() {
// 官網獲取的 API Key 更新為你註冊的
String clientId = "自己百度的AppID";
// 官網獲取的 Secret Key 更新為你註冊的
String clientSecret = "自己百度的API Key";
return getAuth(clientId, clientSecret);
}
/**
* 獲取API訪問token
* 該token有一定的有效期,需要自行管理,當失效時需重新獲取.
* @param ak - 百度雲官網獲取的 API Key
* @param sk - 百度雲官網獲取的 Securet Key
* @return assess_token 示例:
* "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"
*/
public static String getAuth(String ak, String sk) {
// 獲取token地址
String authHost = "https://aip.baidubce.com/oauth/2.0/token?";
String getAccessTokenUrl = authHost
// 1. grant_type為固定引數
+ "grant_type=client_credentials"
// 2. 官網獲取的 API Key
+ "&client_id=" + ak
// 3. 官網獲取的 Secret Key
+ "&client_secret=" + sk;
try {
URL realUrl = new URL(getAccessTokenUrl);
// 開啟和URL之間的連線
HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
connection.setRequestMethod("GET");
connection.connect();
// 獲取所有響應頭欄位
Map<String, List<String>> map = connection.getHeaderFields();
// 遍歷所有的響應頭欄位
for (String key : map.keySet()) {
System.err.println(key + "--->" + map.get(key));
}
// 定義 BufferedReader輸入流來讀取URL的響應
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String result = "";
String line;
while ((line = in.readLine()) != null) {
result += line;
}
/**
* 返回結果示例
*/
System.err.println("result:" + result);
JSONObject jsonObject = new JSONObject(result);
String access_token = jsonObject.getString("access_token");
return access_token;
} catch (Exception e) {
System.err.printf("獲取token失敗!");
e.printStackTrace(System.err);
}
return null;
}
}
出下圖的返回結果,初步測試成功
2.開始測試具體的功能,首先檢視文件所需要的引數
**Base64工具:Base64內容傳送編碼被設計用來把任意序列的8位位元組描述為一種不易被人直接識別的形式,對檔案進行加密傳輸。
檔案讀取:讀取本地檔案路徑,直接呼叫方法不需要自己寫
Json工具類:結果顯示json字串
所需要的工具類都可以自己下載
**
package test;
import java.io.File;
import java.util.*;
import com.bejson.pojo.Face_list;
import com.bejson.pojo.JsonRootBean;
import utils.Base64Util;
import utils.FileUtil;
import utils.GsonUtils;
import utils.HttpUtil;
/**
* 人臉檢測與屬性分析
*/
public class FaceDetect {
/**
* 重要提示程式碼中所需工具類
* FileUtil,Base64Util,HttpUtil,GsonUtils請從
* https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
* https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
* https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
* https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
* 下載
*/
public static String faceDetect(String filepath) {
// 請求url
File file=new File(filepath);
String url = "https://aip.baidubce.com/rest/2.0/face/v3/detect";
try {
Map<String, Object> map = new HashMap<>();
map.put("image", Base64Util.encode(FileUtil.readFileByBytes(filepath)));
map.put("face_field", "age,beauty,expression,face_shape,gender,glasses,race,quality,eye_status,emotion,face_type,location");
map.put("image_type", "BASE64");
String param = GsonUtils.toJson(map);
// 注意這裡僅為了簡化編碼每一次請求都去獲取access_token,線上環境access_token有過期時間, 客戶端可自行快取,過期後重新獲取。
String accessToken = AuthService.getAuth();
String result = HttpUtil.post(url, accessToken, "application/json", param);
System.out.println(result);
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
String resultkson=FaceDetect.faceDetect("D:\\test\\test3.jpg");
System.out.println(resultkson);
}
}
輸出得到結果,如下
Ctrl+Shift+Dnd選中複製,結果存放result.json檔案下,可以直接將程式碼複製去解析。
JSON字串轉為java實體類,下載程式碼放在pojo裡面,注意有些引數的型別是Double範圍是0-1表示推測的概率,而不是Integer。
https://www.bejson.com/
//測試介面
public static void main(String[] args) {
String resultkson=FaceDetect.faceDetect("D:\\test\\test3.jpg");
System.out.println(resultkson);
JsonRootBean rootBean=GsonUtils.fromJson(resultkson, JsonRootBean.class);
// Face_list list=rootBean.result.face_list[0];
List<Face_list> list=rootBean.result.face_list;
System.out.println("年齡:"+((Face_list) list).getAge());
System.out.println("顏值:"+((Face_list) list).getBeauty());
}
接下來開始正式呼叫介面。
相關文章
- 人臉檢測識別,人臉檢測,人臉識別,離線檢測,C#原始碼C#原始碼
- 人臉美化和人臉識別在美顏SDK中的具體應用
- 如何評價美顏api中人臉識別和人臉檢測的準確度?API
- Python人臉識別微笑檢測Python
- 人臉活體檢測人臉識別:眨眼+張口
- 美顏SDK人臉表情識別技術詳解
- 人臉識別技術應用
- 人臉識別之人臉檢測的重要性
- opencv 人臉識別OpenCV
- 人臉識別 — 活體檢測(張嘴搖頭識別)
- 人臉識別 -- 活體檢測(張嘴搖頭識別)
- 人臉識別檢測專案實戰
- 美顏SDK與人臉識別技術有哪些關聯?
- 從零玩轉人臉識別之RGB人臉活體檢測
- Python 爬蟲 + 人臉檢測 —— 知乎高顏值圖片抓取Python爬蟲
- 人臉識別與人體動作識別技術及應用pdf
- 美顏api中2D人臉識別的技術流程API
- 人臉識別之特徵臉方法(Eigenface)特徵
- 人臉識別技術及應用,瞭解一下
- 人臉識別和手勢識別應用(face++)開發
- 識別特定影象的AI玻璃來了,未來或可用於人臉識別AI
- 如何在移動應用中整合美顏SDK實現人臉識別和美化功能
- C#人臉識別入門篇-STEP BY STEP人臉識別--入門篇C#
- 智慧人臉識別門禁系統開發,人臉識別開鎖流程
- 如何最佳化並改進美顏sdk人臉識別技術?
- 美顏sdk人臉識別技術在其它領域有哪些作用?
- NIST:人臉識別供應商測試報告測試報告
- 人臉識別活體檢測技術理論
- 前端人臉識別--兩張臉相似度前端
- python—呼叫API人臉識別PythonAPI
- 基於OpenCV+dlib開發一個人臉識別應用OpenCV
- 一種採用隨機動作指令的人臉活體檢測技術,有效避免人臉識別唄破解隨機
- 【蜂口 | AI人工智慧】人臉顏值——龍鵬 深度學習與人臉影像應用連載(五)AI人工智慧深度學習
- 人臉識別技術看這一篇就夠了(附國內人臉識別20強公司)
- python ubuntu dlib人臉識別3-人臉對齊PythonUbuntu
- 人臉識別之Python DLib庫進行人臉關鍵點識別Python
- 一文讀懂人臉識別技術
- 淺析人臉識別技術應用場景