“本文收錄在個人博客: www.chengxy-nds.top,技術(shù)資源共享。
創(chuàng)新互聯(lián)專注于延安網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供延安營銷型網(wǎng)站建設(shè),延安網(wǎng)站制作、延安網(wǎng)頁設(shè)計、延安網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造延安網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供延安網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
之前不是做了個開源項(xiàng)目嘛,在做完
GitHub
登錄后,想著再顯得有逼格一點(diǎn),說要再加個人臉識別登錄,就我這佛系的開發(fā)進(jìn)度,過了一周總算是抽時間安排上了。
源碼在文末
其實(shí)最近對寫文章有點(diǎn)小抵觸,寫的東西沒人看,總有點(diǎn)小失落,好在有同行大佬們的開導(dǎo)讓我重拾了信心。調(diào)整了自己的心態(tài),只要我分享的東西對大家有幫助就好,至于多少人看那就隨緣吧!
廢話不多說先看人臉識別效果動態(tài),馬賽克有點(diǎn)重哈,沒辦法長相實(shí)在是拿不出手。
前端登錄頁打開攝像頭,進(jìn)行人臉識別, 注意:只識別畫面中是不是有人臉
識別到人臉后,拍照上傳當(dāng)前畫面圖片
后端接受圖片并調(diào)用人臉庫SDK,對人像進(jìn)行比對,通過則登錄成功,并將人像信息注冊到人臉庫和本地
MySQL
。
接下來我們開始對圖片進(jìn)行比對,百度云提供了一個在線的人臉庫,用戶登錄我們先在人臉庫查詢?nèi)讼袷欠翊嬖冢嬖趧t表示登錄成功,如果不存在則注冊到人臉庫。每個圖片有一個唯一標(biāo)識
face_token
。
百度人臉識別
API
實(shí)現(xiàn)比較簡單,需要特別注意參數(shù)
image_type
,它有三種類型
BASE64
:圖片的base64值,base64編碼后的圖片數(shù)據(jù),編碼后的圖片大小不超過2M;URL
:圖片的
URL
地址( 可能由于網(wǎng)絡(luò)等原因?qū)е孪螺d圖片時間過長);FACE_TOKEN
:人臉圖片的唯一標(biāo)識,調(diào)用人臉檢測接口時,會為每個人臉圖片賦予一個唯一的
FACE_TOKEN
,同一張圖片多次檢測得到的
FACE_TOKEN
是同一個。而我們這里使用的是圖片
BASE64
文件,所以
image_type
要設(shè)置成
BASE64
。
@Override
public BaiDuFaceSearchResult faceSearch(
String file) {
try {
byte[] decode = Base64.decode(Base64Util.base64Process(file));
String faceFile = Base64Util.encode(decode);
Map<
String,
Object> map =
new HashMap<>();
map.put(
"image", faceFile);
map.put(
"liveness_control",
"NORMAL");
map.put(
"group_id_list",
"user");
map.put(
"image_type",
"BASE64");
map.put(
"quality_control",
"LOW");
String param = GsonUtils.toJson(map);
String result = HttpUtil.post(faceSearchUrl,
this.getAccessToken(),
"application/json", param);
BaiDuFaceSearchResult searchResult = JSONObject.parseObject(result, BaiDuFaceSearchResult.class);
log.info(
" faceSearch: {}",
JSON.toJSONString(searchResult));
return searchResult;
}
catch (Exception e) {
log.error(
"get faceSearch error {}", e.getStackTrace());
e.getStackTrace();
}
return
null;
}
@Override
public BaiDuFaceDetectResult faceDetect(
String file) {
try {
byte[] decode = Base64.decode(Base64Util.base64Process(file));
String faceFile = Base64Util.encode(decode);
Map<
String,
Object> map =
new HashMap<>();
map.put(
"image", faceFile);
map.put(
"face_field",
"faceshape,facetype");
map.put(
"image_type",
"BASE64");
String param = GsonUtils.toJson(map);
String result = HttpUtil.post(faceDetectUrl,
this.getAccessToken(),
"application/json", param);
BaiDuFaceDetectResult detectResult = JSONObject.parseObject(result, BaiDuFaceDetectResult.class);
log.info(
" detectResult: {}",
JSON.toJSONString(detectResult));
return detectResult;
}
catch (Exception e) {
log.error(
"get faceDetect error {}", e.getStackTrace());
e.getStackTrace();
}
return
null;
}
@Override
public BaiDuFaceAddResult addFace(
String file, UserFaceInfo userFaceInfo) {
try {
byte[] decode = Base64.decode(Base64Util.base64Process(file));
String faceFile = Base64Util.encode(decode);
Map<
String,
Object> map =
new HashMap<>();
map.put(
"image", faceFile);
map.put(
"group_id",
"user");
map.put(
"user_id", userFaceInfo.getUserId());
map.put(
"user_info",
JSON.toJSONString(userFaceInfo));
map.put(
"liveness_control",
"NORMAL");
map.put(
"image_type",
"BASE64");
map.put(
"quality_control",
"LOW");
String param = GsonUtils.toJson(map);
String result = HttpUtil.post(addfaceUrl,
this.getAccessToken(),
"application/json", param);
BaiDuFaceAddResult addResult = JSONObject.parseObject(result, BaiDuFaceAddResult.class);
log.info(
"addResult: {}",
JSON.toJSONString(addResult));
return addResult;
}
catch (Exception e) {
log.error(
"get addFace error {}", e.getStackTrace());
e.getStackTrace();
}
return
null;
}
項(xiàng)目是前后端分離的,但為了大家學(xué)習(xí)方便,我把人臉識別頁面整合到了后端項(xiàng)目。
最后 run FireControllerApplication 訪問地址:http://localhost:8082/face 即可。
源碼
GitHub
地址:
https://github.com/chengxy-nds/fire.git
,歡迎大家來耍~
原創(chuàng)不易,燃燒秀發(fā)輸出內(nèi)容,如果有一丟丟收獲,點(diǎn)個贊鼓勵一下吧!
整理了幾百本各類技術(shù)電子書,送給小伙伴們。關(guān)注公號回復(fù)【666】自行領(lǐng)取。和一些小伙伴們建了一個技術(shù)交流群,一起探討技術(shù)、分享技術(shù)資料,旨在共同學(xué)習(xí)進(jìn)步,如果感興趣就加入我們吧!
網(wǎng)站名稱:PC人臉識別登錄,出乎意料的簡單
鏈接URL:http://m.rwnh.cn/article16/jcjgdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、面包屑導(dǎo)航、服務(wù)器托管、App開發(fā)、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)