1、登錄注冊百度云賬號
按照要去注冊申請百度離線sdk測試賬號,個人賬戶可以申請兩個免費(fèi)測試賬號(https://cloud.baidu.com/doc/FACE/s/Ol0rre5u5)
2、下載百度人臉離線sdk windows-java版

根據(jù)自己電腦32位還是64位選擇相應(yīng)模塊
3、開始集成
3.1 新建立一個基于java8的maven工程,在最外層加入13個dll,如下圖所示

3.2 在src->main->java目錄下添加如下代碼:

3.3 把models和opencv-jar目錄copy到工程跟目錄下

3.4 添加opencv-320.jar依賴,pom中添加如下配置
<dependency>
<groupId>org</groupId>
<artifactId>opencv-320</artifactId>
<version>3.2.0</version>
<scope>system</scope>
<systemPath>${pom.basedir}/opencv-jar/opencv-320.jar</systemPath>
</dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
3.5 添加dll依賴File->Project Structure

Library-> + > Java - > 先建立的工程目錄 -> OK
勾選native Library Location 如下圖:

modules->Dependencies-> + ->Java -> Library 選擇剛添加的Library

至此idea能跑起基層Face sdk的工程 但是打包后,找不到BaiduApi.dll
同時提醒,opencv-jar一定要如我上面方式添加,如果添加Library方式,在打包的時候找不到opencv-jar
4 打包及jar包執(zhí)行
4.1 打包
maven -> package
4.2 jar包執(zhí)行問題
打包后執(zhí)行jar文件 返現(xiàn)找不到BadiduApi.dll,這個時候把13個dll放到 windows/system32 目錄下
有人會想指定java.labrary.path的方式指定 dll目錄,但是會包 BaiduFaceApi依賴的 類庫找不到的問題
原因:在face.java static 靜態(tài)代碼塊如下代碼
// ********* 以下為系統(tǒng)加載庫文件及opencv **********
static {
/* 加載dll */
System.loadLibrary("BaiduFaceApi");
System.loadLibrary("opencv_java320");
}
這代碼標(biāo)識只加載兩個dll, 所以建議 直接把13個dll放到windowns/system32 目錄下
4.3 這樣打包執(zhí)行,還會報找不到model的問題
先建立一個文件夾,把項目里的models和license目錄copy到該目錄

修改代碼:
@PostConstruct
private void init() {
int res = face.sdkInit(modelPath);
if (res != 0) {
System.out.printf("sdk init fail and error =%d\n", res);
return;
}
}
指定modelpath 為剛新建立目錄
在執(zhí)行java -jar xxx.jar 工程完美運(yùn)行!
但是還有個問題需要提醒:在jar結(jié)束的時候,要釋放BaiduFaceApi的native內(nèi)存
@PreDestroy
private void destroy() {
face.sdkDestroy();
}