Hallo RoK,
Hallo
Ich stecke gerade irgendwie fest. Ich möchte opencv nutzen.
Dazu habe ich das <:stuck_out_tongue_winking_eye:rojekt herunter geladen und entpackt.
Unter build/java die opencv_java300jar eingebunden. Und nun
wird haarig.
Was nun? Zwar gibt es gefühlt 1000 tutorials aber die
funktionieren genau garnicht.
System.loadLibary hat immer Fehler.
Highgui gibts garnicht obwohl es immer dabei sein soll.
Als erstes bräuchte man mehr Infos, welches OS? Also ob du eine DLL oder .SO-Datei einbinden möchtest, bei UNIX…sind die Zugriffsrechte korrekt? Bei Windows welche Bit-Maschine und in welchen Bitmuster liegt die DLL vor? Geht es hier um einen Runtime Error oder findet Netbeans nicht die Klassen?
Runtime Error:
Du könntest erstmal zum testen, System.load benutzen mit einem absoluten Pfad also:
try{
System.load('/home/user/projekt/opencv.so');
} catch (UnsatisfiedLinkError e){
e.printStackTrace();
}
Dann funktioniert allerdings die Anwendung nur auf deinem Rechner. Besser aber schwieriger ist loadLibrary:
try{
System.loadLibrary('opencv');
} catch (UnsatisfiedLinkError e){
e.printStackTrace();
}
Hierfür muss die Umgebungsvariable gesetzt werden „LD_LIBRARY_PATH“.
Welche Pfade die Laufzeitumgebung durchsucht findest du mit:
System.out.println( System.getProperty("java.library.path") );
heraus. Solange dein Pfad(wo deine .so bzw .dll liegt) dort nicht auftaucht, fällt das laden fehl. Ist bis hier alles korrekt, dann kann es durchaus sein, dass ein .so oder .dll von weiteren .so/.dll abhängt. Ist das der Fall müssen diese natürlich auch dem Pfad zugeführt werden.
Nach dem bauen der Anwendung sollte man sich ein Startscript anlegen .
MeinApp.sh oder .bat
java -Djava.library.path=".:lib/opencv.so" MeinApp
Dabei liegt der lib-Ordner in der Rootanwendungsstruktur und darin deine mitgelieferte .so oder .dll-Datei.
Ansonsten bitte mehr Infos und die Fehlermeldungen wären nicht schlecht.
Gruß XXD