2017-02-12 3 views
1

OpenCV 3.2で新しいMatインスタンスを作成すると、プログラムはUnsatisfiedLinkErrorをスローします。これが起こるの両方順番に次の行にエラーがスローImgcodecs.imreadを呼び出すときだけでなく、直接Matコンストラクタを呼び出すとき:Matを使用するとOpenCVがUnsatisfiedLinkErrorを投げるのはなぜですか?

プログラムはMacOSのシエラの最新バージョンを実行してMac上で実行されている

Mat mats_mat = Converters.vector_Mat_to_Mat(mats); 
(10.12.3)、利用可能なすべての dylibファイルは java.library.pathディレクトリにあります。読み込み中のファイルが存在することが確認されました。のいずれかを実行するときにエラーがスローされ

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"); 

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に次のコードを使用してロードされ、次のようにスタックトレースは、(部分的に)読み込みます次のアクション:

this(Imgcodecs.imread(filePath)); 

Mat mat = new Mat(); 

MatOfPoint matOfPoint = new MatOfPoint(); 

答えて

0

印刷アウトCore.NATIVE_LIBRARY_NAME私のマシン上で(Ubuntuの16.04 JavaとPythonのポートを持つ/ OpenCVの3.2ワット)を与えます私にこの:

opencv_java320 

Core.NATIVE_LIBRARY_NAMEだけでも拡張子を含めないで、部分的な名前を与えるのに対し、System.loadは完全なパスを要求するように私には思えます! OpenCV Javaには、デフォルトのバイナリファイルパスが/usr/local/share/OpenCV/javaにあります。 (コンパイル時に私または少なくともデフォルト設定を使用した人のために)そこにあなたがリンクする必要がある実際の、正しいネイティブライブラリであるlibopencv_java320.soというライブラリを見つけることができます!

関連する問題