【问题标题】:Why does OpenCV throw an UnsatisfiedLinkError when using Mat?为什么 OpenCV 在使用 Mat 时会抛出 UnsatisfiedLinkError?
【发布时间】:2017-06-30 17:57:39
【问题描述】:

在 OpenCV 3.2 中构造新的 Mat 实例时,程序会抛出 UnsatisfiedLinkError。直接调用 Mat 构造函数以及调用 Imgcodecs.imread 时都会发生这种情况,这反过来会在以下行中引发错误:

Mat mats_mat = Converters.vector_Mat_to_Mat(mats);

该程序正在运行最新版本 macOS Sierra (10.12.3) 的 Mac 上运行,所有可用的 dylib 文件都位于 java.library.path 目录中。已确认正在读取的文件存在。堆栈跟踪(部分)如下所示:

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.imgcodecs.Imgcodecs.imread_1(Ljava/lang/String;)J
    at org.opencv.imgcodecs.Imgcodecs.imread_1(Native Method)
    at org.opencv.imgcodecs.Imgcodecs.imread(Imgcodecs.java:118)

dylib 文件使用main 中的以下代码加载,没有错误或警告:

System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
System.loadLibrary("opencv_imgproc.3.2.0");
System.loadLibrary("opencv_imgcodecs.3.2");
System.loadLibrary("opencv_videoio.3.2");
System.loadLibrary("opencv_highgui.3.2.0");
System.loadLibrary("opencv_flann.3.2");
System.loadLibrary("opencv_ml.3.2");
System.loadLibrary("opencv_features2d.3.2");
System.loadLibrary("opencv_calib3d.3.2");
System.loadLibrary("opencv_objdetect.3.2");
System.loadLibrary("opencv_photo.3.2");
System.loadLibrary("opencv_stitching.3.2");
System.loadLibrary("opencv_video.3.2.0");
System.loadLibrary("opencv_superres.3.2");
System.loadLibrary("opencv_shape.3.2");
System.loadLibrary("opencv_videostab.3.2");

执行以下任何操作时都会引发错误:

this(Imgcodecs.imread(filePath));

Mat mat = new Mat();

MatOfPoint matOfPoint = new MatOfPoint();

【问题讨论】:

    标签: java opencv image-processing computer-vision opencv3.0


    【解决方案1】:

    在我的机器上打印出Core.NATIVE_LIBRARY_NAME(Ubuntu 16.04 w/OpenCV 3.2,带有 Java 和 Python 端口)给了我这个:

    opencv_java320
    

    在我看来System.load 需要完整的路径,而Core.NATIVE_LIBRARY_NAME 只给出部分名称,甚至不包括扩展名! OpenCV Java 的默认二进制文件路径位于/usr/local/share/OpenCV/java。 (至少对于我或在编译时使用默认设置的人来说)在那里你可以找到库libopencv_java320.so,这是你需要链接到的实际、正确的本地库!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-20
      • 2019-08-28
      • 1970-01-01
      • 1970-01-01
      • 2016-03-04
      • 1970-01-01
      相关资源
      最近更新 更多