在OpenCV 3.2中构建新的Mat
实例时,程序会抛出UnsatisfiedLinkError
。在直接调用Mat
构造函数时以及调用Imgcodecs.imread
时都会发生这种情况,而Mat mats_mat = Converters.vector_Mat_to_Mat(mats);
会在以下行中引发错误:
dylib
该程序在运行最新版macOS Sierra(10.12.3)的Mac上运行,所有可用的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();
执行以下任何操作时抛出错误:
{{1}}
答案 0 :(得分:0)
在我的机器上打印'//a[contains(text(), "'+character+'")]/@href'
(带有Java和Python端口的Ubuntu 16.04 w / OpenCV 3.2)给了我这个:
Core.NATIVE_LIBRARY_NAME
在我看来,opencv_java320
需要一条完整的路径,而System.load
只提供部分名称,甚至不包括扩展名! OpenCV Java的默认二进制文件路径位于Core.NATIVE_LIBRARY_NAME
。 (至少对于我或编译时使用默认设置的人),您可以找到库/usr/local/share/OpenCV/java
,这是您需要链接到的实际,正确的本机库!