2017-02-27 2 views
2

Also ich baute eine Vision-Bibliothek auf Windows, und ich habe es auf Windows ausgeführt und es lief in Ordnung. Ich benutzte den Befehl:OpenCV-Bibliothek in Linux laden?

java -jar LiftTracker.jar 

ich die .jar-Datei übertragen ich auf Fenster über zu einem Raspberry Pi gebaut und hat ein make install die opencv Bibliotheken zu installieren. Nachdem ich das getan hätte, habe ich versucht, den gleichen Befehl zu tun, wie oben und kam mit dem Fehler auf:

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

ich tat etwas Forschung und fand, dass ich diesen Befehl an der Seite laufen konnte den -jar Befehl

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

Das hat immer noch nicht funktioniert. Ist es die Art, wie ich die Systembibliothek importiere? So wie ich es im Code bin das Importieren von:

static{ 

    System.loadLibrary("opencv_java310"); 

} 

ich der Hauptgrund denke, dass es nicht funktioniert, weil die Art, wie ich opencv installiert. Irgendwelche Ideen?

Danke!

+0

Verwenden Sie diese stattdessen. 'System.loadLibrary (Core.NATIVE_LIBRARY_NAME);' –

+0

@ Je-ArZamora, das war die ursprüngliche Zeile, die ich verwendete, noch nicht funktioniert – TheGuyWhoCodes

Antwort

1

Sie müssen "libopencv_java320.so" zu Ihren Java-Projekt-Bibliotheken hinzufügen. Es ist etwa 1 MB zusätzliche Bibliothek.

  1. Sie können diese .so Datei aus Quellen erzeugen, wie pro Dokumentation: https://opencv-java-tutorials.readthedocs.io/en/latest/01-installing-opencv-for-java.html#install-opencv-3-x-under-linux

  2. eine andere Art und Weise ist Quellen manuell mit Terminal cmake bauen (es um 4 GB opencv Quellen herunterladen werden), sollte einfach sein : lade die Quelle von opencv herunter: http://opencv.org/releases.html Entpacke sie und im entpackten Verzeichnis erstelle ein/build Verzeichnis wie dieses ../opencv-3.2.0/build/. Stellen Sie sicher, dass Sie cmake installiert haben (Debian/Ubuntu apt get install cmake). Öffnen Sie das Terminal im zuvor erstellten Ordner/build und geben Sie cmake -DBUILD_SHARED_LIBS=OFF .. ein, nachdem die Operation den Typ make -j8 hat und danach "libopencv_java_320" für die Version 3.2.0 generiert werden soll - kopieren Sie diese .so in Ihr Java-Projekt. Letzter Typ make install aus dem gleichen Build-Verzeichnis, um 3.2.0-Bibliotheken auf dem System zu installieren (Sie möchten möglicherweise die ältere Version entfernen, falls erforderlich). Weitere Informationen hier: https://elbauldelprogramador.com/en/compile-opencv-3.2-with-java-intellij-idea/

  3. Gleich wie oben beschrieben, aber automatisiert wird mit diesem Skript: https://github.com/milq/milq/blob/master/scripts/bash/install-opencv.sh Skript installiert auch opencv auf dem Linux-System. Nahm es von dieser Quelle: http://milq.github.io/install-opencv-ubuntu-debian/ Es tut viel mehr als 2. Ansatz, sollte am einfachsten zu machen sein.

Nach opencv Libs in System installieren und das Kopieren libopencv_java320.so in Ihr Java-Projekt, das Sie Quellen (es ist fast 4gb, nachdem alle) entfernen können.

Dann können Sie unten Code in Ihrer Haupt Methode verwenden, Windows.dll (wenn Sie es zuvor auch hinzugefügt) und Linux zu laden.also:

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

Hinzugefügt .so lib zu meinem Dropbox, fühlen Sie sich frei, es herunterzuladen. Nicht wirklich sicher, ob es funktioniert, wenn Sie auf Ihrem Linux-System eine andere Version als opencv installiert haben, aber es ist einen Versuch wert, wenn Sie nicht alle 4gb Quellen nur für diese eine Datei erstellen möchten: https://www.dropbox.com/s/9nlfaornihy6zun/libopencv_java320.so?dl=1 –

0

wenn Sie OpenCV unter OS gebaut haben;

1) gesetzt opencv und Java-Variable

  • JAVA_HOME = enthält das Verzeichnis JDK

  • ANT_HOME = das Verzeichnis, in dem Apache Ant

  • OPENCV_HOME installiert ist = das Verzeichnis in welche alle von OpenCV installiert ist

  • OPENCV_LIB = das Verzeichnis, das a enthält ll nativen JNI Bibliotheken

  • OPENCV_JAR = der Pfad zur JAR-Datei der Java-Schnittstelle zu OpenCV (typischerweise einen Namen wie "opencv-320.jar")

    • OPENCV_HOME enthält, werden auf/zu Hause sein /opencv-3.2.0

    • OPENCV_JAR bei $ wird {OPENCV_HOME} /build/bin/opencv-320.jar

    • OPENCV_LIB bei $ wird {OPENCV_HOME}/build/lib

2) Laden Sie native Bibliothek

System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 

3) Führen Sie Ihre Anwendung

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

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