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中添加如下配置


    org
    opencv-320
    3.2.0
    system
    ${pom.basedir}/opencv-jar/opencv-320.jar


org.springframework.boot
    spring-boot-maven-plugin
    
    true

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

你可能感兴趣的:(java 集成百度face sdk)