2017-02-27 115 views
2

所以我在Windows上構建了一個視覺庫,並且我已經在Windows上運行它並且運行正常。我用命令:在Linux中加載OpenCV庫?

java -jar LiftTracker.jar 

我調到.jar文件我基於Windows轉移到樹莓派,並沒有一個make install來安裝OpenCV的庫。一旦我做到了,我試圖做同樣的命令,上面並與錯誤想出了:

java.lang.UnsatisfiedLinkError: no opencv_java310 in java.library.path. 

我做了一些研究,我發現我可以沿側運行此命令的罐子命令

java -Djava.library.path=/path/to/dir 

這仍然沒有工作。這是我導入系統庫的方式嗎?我在導入代碼的方法是:

static{ 

    System.loadLibrary("opencv_java310"); 

} 

我認爲主要的原因是它不工作是因爲我安裝的OpenCV的方式。有任何想法嗎?

謝謝!

+0

使用這個代替。 'System.loadLibrary(Core.NATIVE_LIBRARY_NAME);' –

+0

@ Je-ArZamora那是我使用的原始行,仍然沒有工作 – TheGuyWhoCodes

回答

1

您需要將「libopencv_java320.so」添加到您的java項目庫。它大約有1mb額外的圖書館。

  1. 您可以生成從源這個.so文件按照文件:https://opencv-java-tutorials.readthedocs.io/en/latest/01-installing-opencv-for-java.html#install-opencv-3-x-under-linux

  2. 另一種方式是建立使用終端cmake的手動源(它會下載各地的OpenCV源4GB),應該很容易:從opencv下載源代碼:http://opencv.org/releases.html解壓縮並在解壓後的目錄中創建一個/ build目錄,像這樣../opencv-3.2.0/build/。確保你已經安裝了cmake(Debian/Ubuntu apt get install cmake)。在之前創建/構建文件夾中打開終端,並在操作完成後鍵入cmake -DBUILD_SHARED_LIBS=OFF ..鍵入make -j8,之後應該爲3.2.0版本生成「libopencv_java_320」 - 將此.so複製到您的Java項目中。最後輸入make install來自同一個build目錄,在系統上安裝3.2.0 libs(如果需要,您可能需要先刪除舊版本)。更多的信息在這裏:https://elbauldelprogramador.com/en/compile-opencv-3.2-with-java-intellij-idea/

  3. 與上面的方法相同,但自動化將通過使用此腳本:https://github.com/milq/milq/blob/master/scripts/bash/install-opencv.sh腳本也會在Linux系統上安裝opencv。從這個來源採取它:http://milq.github.io/install-opencv-ubuntu-debian/它做更多然後第二種方法,應該是最容易做到。

系統和複製安裝OpenCV的庫libopencv_java320.so到您的Java項目,你可以刪除來​​源後(這幾乎是4GB畢竟)。

然後,您可以在您的主要的方法中使用下面的代碼來加載windows .dll(如果您以前也添加過)和linux。所以:

String libName = ""; 
if (SystemUtils.IS_OS_WINDOWS) { 
    libName = "opencv_java320.dll"; 
} else if (SystemUtils.IS_OS_LINUX) { 
    libName = "libopencv_java320.so"; 
} 
System.load(new File("./libs/".concat(libName)).getAbsolutePath()); 
+0

在我的保管箱中添加了.so lib,隨時可以下載它。如果你已經在你的linux系統上安裝了不同於opencv的320版本,那麼它是否可以工作,但是如果你不想爲這個文件構建所有4GB的源代碼,那麼值得一試:https:/ /www.dropbox.com/s/9nlfaornihy6zun/libopencv_java320.so?dl=1 –

0

如果你在OS上建立了OpenCV;

1)設置的OpenCV和java可變

  • JAVA_HOME =目錄包含您JDK

  • ANT_HOME =其中Apache Ant的安裝

  • OPENCV_HOME目錄=在目錄其中所有的OpenCV安裝

  • OPENCV_LIB =包含一個目錄LL原生JNI庫

  • OPENCV_JAR =路徑包含Java接口 到OpenCV的(通常命名爲類似 「OpenCV的-320.jar」)

    • OPENCV_HOME的JAR文件將在/家/opencv-3.2.0

    • OPENCV_JAR將在$ {} OPENCV_HOME /build/bin/opencv-320.jar

    • OPENCV_LIB將在$ {} OPENCV_HOME /建築/ lib目錄

2)加載本地庫

System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 

3)運行應用程序

java -Djava.library.path=${OPENCV_LIB} -jar myapp.jar 

https://github.com/WPIRoboticsProjects/GRIP-code-generation/tree/master/java