[OpenCV-Problem] Libs werden nicht gefunden
-
Hallo c-community,
ich weiß ich bin hier etwas (sehr) weit vom Thema ab, aber da OpenCV ja eine sehr häufig durch Programmierer genutzte Bibliothek ist, hoffe ich hier Hilfe zu finden. Also ich versuche OpenCV-2.4.1 auf meinem Ubuntu 12.04 zum laufen zu bekommen. Installation ist fertig (installiert im /home/username/OpenCV2.4.1 Ordner).
Problem ist, beim kompilieren beschwert er sich, das die cv.h nicht gefunden werden kann. Mein Kompilier-Befehl sieht wie folgt aus:
gcc -o Programmname src/program.c -lcv -lhighgui
Ich habe die Installation von OpenCV nach:
http://abhitak.wordpress.com/2009/08/29/installing-opencv-on-linux-ubuntu-9-04/
gemacht.
Was ich noch nicht ganz verstehe ist das pkg-config. Hier scheint auch der Fehler zu liegen. Wenn ich pkg-config --cflags opencv mache, wie auf der Webseite beschrieben, dann wird bei mir nichts ausgegeben, obwohl ich mich an die Installationsanweisungen gehalten habe. Anscheinend gebe ich den falschen Library-Ordner an.
Kann mir hier jemand weiter helfen?
MfG
mirrowwinger
-
Wenn nichts dagegen spricht, kannst du aber auch ruhig die aktuelle Version (2.4.2) nehmen: http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.2/
Die OpenCV-ler haben auch eine eigene Installationsanleitung, versuchs mal damit: http://opencv.willowgarage.com/wiki/InstallGuideIm Prinzip entpackst du einfach das Archiv, gehst dann in das Verzeichnis (CMakeLists.txt und so sind da drin) uns sagst:
mkdir release cd release cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ./configure make sudo make install sudo ldconfig -v
Und dann probier nochmal, deinen code (oder noch besser erst eins der beiliegenden examples) durchzukompilieren.
-
@ Dobi
Vielen Dank, werde ich gleich ausprobieren und dann mitteilen, ob es geklappt hat.
-
danke ich kann jetzt ohne den ersten Fehler meine Programme kompilieren.
Leider kommt jetzt ein neuer Fehler, der mir hauptsächlichst in der /usr/local/include/opencv2/core/core_c.h auftritt. Es werden in sehr vielen Funktionen (cvRound, cvDecRefData, cvGetRow, ...) undefined references (lrint, cvFree, cvGetRows, ...) ausgegeben. Die Programme von OpenCV können ohne Fehler kompiliert werden, Fehler ist also jetzt bei mir zu suchen.
Hier mal der kurze Source-code:
#include "cv.h" #include "highgui.h" #include <stdio.h> int main() { return 0; }
Keine große Hexerei. Also denke ich, ich habe vieleicht eine Headerdatei vergessen.
Mein Kompilerbefehl sieht jetzt wie folgt aus:
gcc -ggdb `pkg-config opencv --cflags --libs` src/program.c -o program
-
undefined references sind keine Compilerfehler sondern Linkerfehler. Mit Headerdateien hat das also nichts zu tun. Du hast aber vergessen, die Bibliothek, in der die Funktionen, die in deinem Programm benutzt werden, definiert sind, zu linken. Versuchs mal mit dieser Zeile:
g++ -o mirrowwinger_sein_programm.cpp -lopencv_core -lopencv_imgproc -lopencv_calib3d -lopencv_video -lopencv_features2d -lopencv_ml -lopencv_highgui -lopencv_objdetect -lopencv_contrib -lopencv_legacy
Achja, und falls du nicht aus irgendwelchen Gründen gezwungen bist, das alte gefährliche ekelwutzige C-Interface von OpenCV zu benutzen, kann ich dir nur dringendst zum neuen sicheren hübschen C++-Interface raten. Auch in den Tutorials ( http://docs.opencv.org/ ) wird das hauptsächlich benutzt.