java 集成百度face sdk

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();
    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容