Instalacja openCV w środowisku Netbeans

0

Witam wszystkich,

mam problem, z którym nie potrafię sobie poradzić od kilku dni, a mianowicie nie wiem jak skonfigurować netbeans'a, żeby współpracował z biblioteką openCv ? Pobrałem biblioteki z oficjalnej strony, dodatkowo wrappery javy (.jar) które dołączyłęm do projektu. Co dalej ? Podczas uruchamiania projektu pojawiają się błedy

at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1939)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1864)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1825)
at java.lang.Runtime.load0(Runtime.java:792)
at java.lang.System.load(System.java:1059)
at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:418)
at com.googlecode.javacpp.Loader.load(Loader.java:368)
at com.googlecode.javacpp.Loader.load(Loader.java:315)

Dopiero zaczynam przygodę z javą i będę wdzięczny za jakąkolwiek pomoc. Pozdrawiam

0

nikt nie pomoże ?

0

Ze stacktrace'a wynika tylko tyle, że coś próbuje ładować natywną bibliotekę. Najczęstsze błędy w takim wypadku to:

  • JVM nie może znaleźć natywnej biblioteki, bo nie został podany odpowiedni katalog z nią jako przełącznik przy odpalaniu JVMa,
  • JVM nie może załadować natywnej biblioteki, bo została skompilowana na inną architekturę, np JVM jest 64-bitowy, a biblioteka 32-bitowa,
0

a jak dołączyć pliki z rozszerzeniem .dll ?

0

Wrzuć normalnie, a potem poszukaj VM Options i dodaj -Djava.library.path=ścieżka

0

niestety dalej wyrzuca błędy. Na 100% robię coś źle. Mógłbyś mi krok po kroku napisać jak zaimportować te biblioteki, bo nigdzie nie potrafię znaleźć jednoznacznej odpowiedzi. Biblioteki wrzucałem bezpośrednio na c:, do katalogu projektu pliki dll i foldery z plikami.

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Documents and Settings\Robert\Ustawienia lokalne\Temp\javacpp10210762412868\jniavutil.dll: Can't find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1939)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1864)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1825)
at java.lang.Runtime.load0(Runtime.java:792)
at java.lang.System.load(System.java:1059)
at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:418)
at com.googlecode.javacpp.Loader.load(Loader.java:368)
at com.googlecode.javacpp.Loader.load(Loader.java:315)
at com.googlecode.javacv.cpp.avutil.<clinit>(avutil.java:76)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.googlecode.javacpp.Loader.load(Loader.java:334)
at com.googlecode.javacv.cpp.avcodec.<clinit>(avcodec.java:87)
at com.googlecode.javacv.FFmpegFrameGrabber.<init>(FFmpegFrameGrabber.java:73)
at opencwicz.OpenCwicz.main(OpenCwicz.java:25)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)

0

z tego wynika że nie znalazło podanej dll w danym miejscu

C:\Documents and Settings\Robert\Ustawienia lokalne\Temp\javacpp10210762412868\jniavutil.dll

0
pecet napisał(a):

z tego wynika że nie znalazło podanej dll w danym miejscu

C:\Documents and Settings\Robert\Ustawienia lokalne\Temp\javacpp10210762412868\jniavutil.dll

domyślam się, ale nie gdzie robię błąd wskazując biblioteki, ponieważ wskazałem folder z projektem

0

ten java warper to zapewne to http://code.google.com/p/javacv/
ja tak to tam są już dll
wystarczy javacv-bin.zip a stąd jar => javaccp + javacv + jarek z dll (javacv-...)

0
pecet napisał(a):

ten java warper to zapewne to http://code.google.com/p/javacv/
ja tak to tam są już dll
wystarczy javacv-bin.zip a stąd jar => javaccp + javacv + jarek z dll (javacv-...)

opiszę może co dokładnie robię, a Ty nakierujesz mnie gdzie popełniam błąd. Po stworzeniu nowego projektu klikam na niego prawym i daję properties--> Libraries--> Add JAR/Folder i wskazuję pliki:
javacpp.jar
javacvcv.jarjavacv-windows-x86_64.jar
javacv.jar

następnie wklejam kod(jakiś przykład z internetu)

 

   // read an image
        final IplImage image = cvLoadImage("boldt.jpg");
        
        // create image window named "My Image"
        final CanvasFrame canvas = new CanvasFrame("My Image");
        
        // request closing of the application when the image window is closed
        canvas.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
                
        // show image on window
        canvas.showImage(image);

po uruchomieniu projektu otrzymuję takie komunikaty

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Documents and Settings\Robert\Ustawienia lokalne\Temp\javacpp6778801455622\jniopencv_core.dll: Can't find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1939)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1864)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1825)
at java.lang.Runtime.load0(Runtime.java:792)
at java.lang.System.load(System.java:1059)
at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:418)
at com.googlecode.javacpp.Loader.load(Loader.java:368)
at com.googlecode.javacpp.Loader.load(Loader.java:315)
at com.googlecode.javacv.cpp.opencv_core.<clinit>(opencv_core.java:131)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.googlecode.javacpp.Loader.load(Loader.java:334)
at com.googlecode.javacv.cpp.opencv_imgproc.<clinit>(opencv_imgproc.java:96)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.googlecode.javacpp.Loader.load(Loader.java:334)
at com.googlecode.javacv.cpp.opencv_highgui.<clinit>(opencv_highgui.java:91)
at opencv.OpenCV.main(OpenCV.java:13)
Java Result: 1
BUILD SUCCESSFUL (total time: 2 seconds)

0

Weź po prostu wypakuj te wszystkie dll które tam gdzieś siedzą w jednym z ziów/jarów do np katalogu lib projektu i tak jak wyżej kolega wskazał, podaj przy w konfiguracji run parametr określający gdzie ma JVM szukać tych dll. (np. -Djava.library.path=sicezka_projektu\lib)

0

znalazłem coś takiego http://code.google.com/p/javacv/wiki/Windows7AndOpenCV, odnosi się przynajmniej do mnie bo na 3 kompach ma win7_64

0
pecet napisał(a):

znalazłem coś takiego http://code.google.com/p/javacv/wiki/Windows7AndOpenCV, odnosi się przynajmniej do mnie bo na 3 kompach ma win7_64

temat dotyczy środowiska Visual Studio a ja używam netbeans

Weź po prostu wypakuj te wszystkie dll które tam gdzieś siedzą w jednym z ziów/jarów do np katalogu lib projektu i tak jak wyżej kolega wskazał, podaj przy w konfiguracji run parametr określający gdzie ma JVM szukać tych dll. (np. -Djava.library.path=sicezka_projektu\lib)

ten sposób w ogóle nie działa.

Zauważyłem, że po podpięciu plików .jar(we właściwościach projektu - opisałem to wcześniej) netbeans nie podkreśla błędów, a więc rozpoznaje klasy i funkcje zawarte w bibliotekach. Problem występuje dopiero w momencie kompilacji. Natomiast próbując metody **Antoniossss **od razu podkreślone zostają błędy.

Czy ktoś wie co z tym zrobić ???

0

No moment, a Ty myślałeś, że jak skopiujesz jarki do katalogu który wskazałem to NB magicznie je tam odnajdzie i bez pytania podepnie sobie do zależności w projekcie?
Te wskazówki były
po primo : odnośnie uruchamiania nie kompilacji
po secundo: odnosiły się do bibliotek natywnych nie jarów
btw jary też tam powinny siedzieć, a dla porządku dll jeszcze powinno się upchnąć w dodatkowy katalog "native"
Instrukcje które Tobie podałem są słuszne i jak najbardziej poprawne - nie jest winą przepisu, ani jego autora, że kucharz gotować nie potrafi.
NB sam probonuje kopiowanie bibliotek do podkatalogu lib - trzeba czytać okienka dialogowe, nie klikać "na pałę" ok podczas dodawania bibliotek do projektu. A na czerwono nb sypał, bo po przenoszeniu bibliotek gdzie wskazałem nie dodałeś ich do projektu.

www.toptraker.pl - wykorzystuje biblioteki natywne dla obsługi schowka. Pobierz aplikacje zobacz jaka jest struktura katalogów. (Projekt w nb - żeby nie było)
A w taki sposób łąduje dll:

static
{
  public static void loadLibrary(".\\lib\\nazwa_dll_zależna_od_platformy");
}

Działa
Dziękuję bardzo.

0
  1. link podałem ponieważ kod OpenCV jest w MVS napisany, i odnosi się do systemu win7_64, jak maż ten system postępuj zgodnie ze wskazówkami.
  2. na 3 kompach mam ten system więc nie przetestuje na 32bit czy też starszym win
0

Uruchomiłem w końcu tą bibliotekę. Opiszę dla potomnych jak najprościej(przynajmniej dla mnie) można to zrobić

dodać pliki .jar do projektu, pobrać openCV2.4.0 i wypakować na c:\ i dodać do zmiennej path

C:\opencv\build\common\tbb\ia32\vc10
C:\OpenCV\build\x86\vc10\bin

po tych zabiegach wszystko działa jak należy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1