face++主頁
首先需要建立faceset,乙個faceset下有多個facetoken,facetoken就是人臉資料
其次,一張每次可以生成多個不同的facetoken,
可以只保留乙個facetoken,然後直接判斷facetoken是否與資料庫的相同,如果執行這一步,可以使用刪除的方法
也可以保留多個facetoken,根據一張獲取多個facetoken然後遍歷與資料庫相同的,確定人物身份
查詢時在faceset裡面查這個所對應的facetoken,如果系統只存了乙個,那就返回這唯一的乙個,如果多個就會返回多個
定義實體類
@data@allargsconstructor
@noargsconstructor
class
face
@data
@allargsconstructor
@noargsconstructor
class
facebean
@data
@allargsconstructor
@noargsconstructor
class
faceset
publicclass
faceutils
/*** 建立人臉並新增至指定的人臉庫
* @param
file 檔案
* @param
faceset 人臉庫
* @return
返回face_token
* @throws
exception 可能丟擲建立人臉異常/繫結人臉異常
*/public string createandbind(multipartfile file, string faceset) throws
exception
/***
* @param
image_base64 檔案base64字串
* @param
faceset 人臉庫
*/private string createface(string image_base64, string faceset) throws
exception
catch
(exception e)
facebean facebean = jsonobject.parseobject(str, facebean.class
);
if(objectutils.isempty(facebean.getfaces()))
string face_token = facebean.getfaces().get(0).getfacetoken();
url = "";
map.clear();
map.put("api_key", api_key);
map.put("api_secret", api_secret);
map.put("faceset_token", faceset);
map.put("face_tokens", face_token);
try }
catch
(exception e)
return
face_token;
}/*** 查詢人臉資訊 傳入 ,從指定人臉庫查詢人臉
* @param
file 檔案
* @param
faceset 人臉庫
*/public string searchface(multipartfile file, string faceset) throws
ioexception
double adouble = facebean.getthresholds().get("1e-3");
logger.warn("對比度 {}",adouble);
//判斷對比閾值
if(facebean.getresults().get(0).getconfidence()return facebean.getresults().get(0).getfacetoken();
} catch
(exception e)
}/*** 刪除指定庫中的指定某張
*/public string removeface(hashmapmap)
catch
(exception e)
return
str;
}private string boundarystring =getboundary();
private
byte post(string url, hashmapmap) throws
exception
obos.writebytes("--" + boundarystring + "--" + "\r\n");
obos.writebytes("\r\n");
obos.flush();
obos.close();
inputstream ins = null
;
int code =conne.getresponsecode();
try
else
} catch
(sslexception e)
bytearrayoutputstream baos = new
bytearrayoutputstream();
byte buff = new
byte[4096];
intlen;
while ((len = ins.read(buff)) != -1)
byte bytes =baos.tobytearray();
ins.close();
return
bytes;
}private
static
string getboundary()
return
sb.tostring();
}}
face 人臉識別
今天搞了很久才看懂face 文件。有過第三方api呼叫的經驗應該不難。最後在比較兩張的相似的時候還是有問題,自己測試了下,呼叫 recognition compare介面,總是返回null,搞了半天沒搞定。最後還是貼上自己寫的 function urlexec url function testfa...
face 實現人臉識別
由於專案是在多年前完成,face 的sdk可能有調整,所以部分功能可能不再適用 2017.3 最近做了乙個使用face 實現人臉識別的功能,當初看著官方文件一點頭緒都沒有,看了好久才弄明白,所以在這裡記錄一下,希望可以幫到需要的人,首先要註冊乙個face 賬號,獲取apikey和apisecret,...
人臉識別和face 人臉分析
參考部落格 專案需求,android客戶端作為airplay接收端,在開啟airplay的時候後台開啟攝像頭,當捕捉到人臉的時候將這一幀影象傳到face 進行人臉分析。airplay接收端可整合xindawn的airplay,github位址 1.後台開啟攝像頭 基本都是將預覽介面的activity...