當在OpenCV 3.2中構建一個新的Mat
實例時,程序將拋出一個UnsatisfiedLinkError
。這種情況既直接調用時Mat
構造,以及調用Imgcodecs.imread
,這反過來以下行引發錯誤時:爲什麼OpenCV在使用Mat時拋出一個UnsatisfiedLinkError?
Mat mats_mat = Converters.vector_Mat_to_Mat(mats);
程序正在在Mac上運行的是最新版本的MacOS塞拉利昂的(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();