在没有安装opencv的linux服务器上运行 java + opencv 的程序

折腾了一天,分享给大家。原创文章,转载请注明出处。

编译opencv的so库和jar包 (3.4.3):

    1.官网上没有现成的so库和jar包文件,需要自己根据实际需要去编译。官网太慢,去码云上下载。https://gitee.com/mirrors/opencv/tags  找到3.4.3版本,下载得到文件mirrors-opencv-3.4.3.zip

    2.上传文件到目标服务器的/usr/local/ 目录,解压缩:unzip mirrors-opencv-3.4.3.zip

    3.创建编译的文件夹:cd /usr/local/opencv && mkdir build && cd build

    4.执行cmake。cmake -DBUILD_SHARED_LIBS=OFF ..   这里注意必须要设置cmake -DBUILD_SHARED_LIBS=OFF,

      官网的解释 https://docs.opencv.org/4.4.0/d9/d52/tutorial_java_dev_intro.html    ,这样编译出来的libopencv_java的so库文件有20多MB,

         

      不设off的话生成的so库只有几MB,显然是不全的。 在没有安装opencv的服务器上运行会报错:java.lang.UnsatisfiedLinkError: no opencv_java343 in java.library.path   

      注意看一眼输出的编译信息。要保证java下面的ant,jni,java wrappers都有信息。否则不会生成so库和jar包

    5.  执行 make && make install。之后在/usr/local/opencv/build/lib目录下就可以找到libopencv_java343.so。

java测试程序

添加pom依赖,通过maven直接添加对应的jar包。或者也可以引入之前编译的/usr/local/opencv/build/bin目录下的jar包opencv-343.jar。
<dependency>
    <groupId>org.bytedeco.javacpp-presets</groupId>
    <artifactId>opencv</artifactId>
    <version>3.4.3-1.4.3</version>
</dependency>

在主函数中做简单的测试代码

public class Application {
    static {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    }

    public static void main(String[] args) throws InterruptedException {
        System.out.println("ok");
        //填你的图片地址
        Mat image = imread("/root/workspace/test/1.jpg", 1);
        System.out.println(image.cols());
        System.out.println(image.rows());
    }
}

部署

在没有安装opencv的服务器上,将libopencv_java343.so放到usr/lib目录下,然后运行测试jar包

Acho que você gosta

Origin blog.csdn.net/wangyue4/article/details/113585397
Recomendado
Clasificación