При создании нового экземпляра Mat
в OpenCV 3.2 программа выдает UnsatisfiedLinkError
. Это происходит как при вызове Mat
конструктор непосредственно, а также при вызове Imgcodecs.imread
, который, в свою очередь, выдает ошибку на следующей строке:Почему OpenCV бросает UnsatisfiedLinkError при использовании Mat?
Mat mats_mat = Converters.vector_Mat_to_Mat(mats);
Программа бежится на Mac установлена последняя версия MacOS Sierra (10.12.3), и все доступные файлы 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();