1、登录注册百度云账号
按照要去注册申请百度离线sdk测试账号,个人账户可以申请两个免费测试账号(https://cloud.baidu.com/doc/FACE/s/Ol0rre5u5)
2、下载百度人脸离线sdk windows-java版
image.png
根据自己电脑32位还是64位选择相应模块
3、开始集成
3.1 新建立一个基于java8的maven工程,在最外层加入13个dll,如下图所示
image.png
3.2 在src->main->java目录下添加如下代码:
image.png
3.3 把models和opencv-jar目录copy到工程跟目录下
image.png
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
image.png
Library-> + > Java - > 先建立的工程目录 -> OK
勾选native Library Location 如下图:
image.png
modules->Dependencies-> + ->Java -> Library 选择刚添加的Library
image.png
至此idea能跑起基层Face sdk的工程 但是打包后,找不到BaiduApi.dll
同时提醒,opencv-jar一定要如我上面方式添加,如果添加Library方式,在打包的时候找不到opencv-jar
4 打包及jar包执行
4.1 打包
maven -> package
4.2 jar包执行问题
打包后执行jar文件 返现找不到BadiduApi.dll,这个时候把13个dll放到 windows/system32 目录下
有人会想指定java.labrary.path的方式指定 dll目录,但是会包 BaiduFaceApi依赖的 类库找不到的问题
原因:在face.java static 静态代码块如下代码
// ********* 以下为系统加载库文件及opencv **********
static {
/* 加载dll */
System.loadLibrary("BaiduFaceApi");
System.loadLibrary("opencv_java320");
}
这代码标识只加载两个dll, 所以建议 直接把13个dll放到windowns/system32 目录下
4.3 这样打包执行,还会报找不到model的问题
先建立一个文件夹,把项目里的models和license目录copy到该目录
image.png
修改代码:
@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 为刚新建立目录
在执行java -jar xxx.jar 工程完美运行!
但是还有个问题需要提醒:在jar结束的时候,要释放BaiduFaceApi的native内存
@PreDestroy
private void destroy() {
face.sdkDestroy();
}