2017-06-29 4 views
0

Ich versuche derzeit, ein Projekt mit JavaCV in Kotlin zu starten. Ich verwende IntelliJ Idea als meine IDE. Ich benutze JavaCV 1.3.2 und OpenCV 3.20. Das ist mein Setup für die Abhängigkeiten des Moduls für OpenCV:Verwenden von JavaCV mit Kotlin

OpenCV Project Library Configuration

und für JavaCV:

JavaCV Project Library Configuration

I opencv vor javacv in den Abhängigkeiten haben. Um zu testen, dass OpenCV vorhanden und gültig ist, schrieb ich das folgende zu testen. Da ich loadLibrary und die Versionsnummer korrekt anzeigen kann, kann ich davon ausgehen, dass OpenCV tatsächlich funktioniert.

import org.opencv.core.Core 
import org.opencv.core.Mat 
import org.opencv.core.CvType 
import org.opencv.core.Scalar 
import org.bytedeco.javacv.OpenCVFrameGrabber 

fun main(args : Array<String>) { 
    println("Test Built Successfully") 
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME) 
    println("Running OpenCV Version ${Core.VERSION}") 
    val grabber = OpenCVFrameGrabber(1) 
} 

Die Linie, wo wir die Grabber initialisieren rasies die folgende Ausnahme:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jniopencv_core in java.library.path 
Caused by: java.lang.UnsatisfiedLinkError: no opencv_imgproc320 in java.library.path 

Vielleicht ich hier etwas fehlt bin, aber ich habe die Anweisungen des README.md im Git-Repository bereitgestellt gefolgt JavaCV. Ich habe niemanden gesehen, der versucht hat, diese Bibliothek mit Kotlin auf StackOverflow zu benutzen, obwohl ich einige Posts über dieselbe Ausnahme ausgecheckt habe, die mit Java ausgelöst wurde.

Antwort

0

Die Behandlung dieses Fehlers unterscheidet sich nicht in Kotlin von Java; Sie müssen den Pfad zu den nativen Bibliotheken für opencv angeben. Standardmäßig sucht es unter Windows nach den nativen Bibliotheken in der PATH-Umgebungsvariablen.

Sie können auch explizit angeben, in welches Verzeichnis nach den systemeigenen Bibliotheken gesucht werden soll, indem Sie die Systemeigenschaft java.library.path angeben (wie in der Fehlermeldung angegeben).

Zum Beispiel können Sie eine Ausführungskonfiguration wie folgt hinzu: run config

Wo ${PATH_TO_DYNAMIC_LIB} wäre, wo immer die native lib opencv_imgproc320.dll ist - ich glaube, in Ihrem Fall wäre es C:/Users/ms/IdeaProjects/CVTest/opencv/build/java/x64 sein.

+0

Durch das Ändern des Bibliothekspfads in den VM-Optionen wurden andere Bibliotheken zerstört, die in intellij konfiguriert wurden, da sie nicht den gleichen Bibliothekspfad hatten. Falls angegeben, wird dieser Pfad anstelle des Pfads für die Bibliotheken verwendet. –

0

Ich konnte dies lösen, indem ich meine VM-Optionen leer ließ und alle notwendigen OpenCV-Bibliotheken als native Bibliothekspfade in meiner JavaCV-Bibliothekskonfiguration hinzufügte.