openCV: Beispielprogramm letter_recog.cpp
-
Hallo,
ich würde gerne das Beispielprogramm letter_recog.cpp aus der openCV ausprobieren. leider lässt es sich nicht compilieren und ich habe keine Idee, woran das liegt. Ich compiliere es folgendermaßen unter Mandriva Linux 2010:
g++ letter_recog.cpp -o letter_recog -I /usr/local/include/opencv -L /usr/local/lib -lm -lcv -lhighgui -lcvauxDie Datei befindet sich in der openCV standardmäßig im Ordner /samples/c/. (siehe auch https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/c/letter_recog.cpp?rev=887)
Beim Versuch das Programm zu compilieren erhalte ich folgende Fehlermeldung:
/home/siegfried/tmp/ccbStlIC.o: In function `build_rtrees_classifier(char*, char*, char*)': letter_recog.cpp:(.text+0x341): undefined reference to `CvRTrees::CvRTrees()' letter_recog.cpp:(.text+0x3dd): undefined reference to `CvStatModel::load(char const*, char const*)' letter_recog.cpp:(.text+0x3f2): undefined reference to `CvRTrees::get_tree_count() const' letter_recog.cpp:(.text+0x71d): undefined reference to `CvRTrees::train(CvMat const*, int, CvMat const*, CvMat const*, CvMat const*, CvMat const*, CvMat const*, CvRTParams)' letter_recog.cpp:(.text+0x774): undefined reference to `CvRTrees::predict(CvMat const*, CvMat const*) const' letter_recog.cpp:(.text+0x844): undefined reference to `CvRTrees::get_tree_count() const' letter_recog.cpp:(.text+0x862): undefined reference to `CvRTrees::get_var_importance()' letter_recog.cpp:(.text+0x9cc): undefined reference to `CvRTrees::get_proximity(CvMat const*, CvMat const*, CvMat const*, CvMat const*) const' letter_recog.cpp:(.text+0xa43): undefined reference to `CvStatModel::save(char const*, char const*) const' letter_recog.cpp:(.text+0xa94): undefined reference to `CvRTrees::~CvRTrees()' letter_recog.cpp:(.text+0xaae): undefined reference to `CvRTrees::~CvRTrees()' /home/siegfried/tmp/ccbStlIC.o: In function `build_boost_classifier(char*, char*, char*)': letter_recog.cpp:(.text+0xb4e): undefined reference to `CvBoost::CvBoost()' letter_recog.cpp:(.text+0xbef): undefined reference to `CvStatModel::load(char const*, char const*)' letter_recog.cpp:(.text+0xc04): undefined reference to `CvBoost::get_weak_predictors()' letter_recog.cpp:(.text+0xece): undefined reference to `CvBoostParams::CvBoostParams(int, int, double, int, bool, float const*)' letter_recog.cpp:(.text+0xf9a): undefined reference to `CvBoost::train(CvMat const*, int, CvMat const*, CvMat const*, CvMat const*, CvMat const*, CvMat const*, CvBoostParams, bool)' letter_recog.cpp:(.text+0xff4): undefined reference to `CvBoost::get_weak_predictors()' letter_recog.cpp:(.text+0x111f): undefined reference to `CvBoost::predict(CvMat const*, CvMat const*, CvMat*, CvSlice, bool, bool) const' letter_recog.cpp:(.text+0x1248): undefined reference to `CvBoost::get_weak_predictors()' letter_recog.cpp:(.text+0x127e): undefined reference to `CvStatModel::save(char const*, char const*) const' letter_recog.cpp:(.text+0x12dd): undefined reference to `CvBoost::~CvBoost()' letter_recog.cpp:(.text+0x12f7): undefined reference to `CvBoost::~CvBoost()' /home/siegfried/tmp/ccbStlIC.o: In function `build_mlp_classifier(char*, char*, char*)': letter_recog.cpp:(.text+0x1383): undefined reference to `CvANN_MLP::CvANN_MLP()' letter_recog.cpp:(.text+0x1418): undefined reference to `CvStatModel::load(char const*, char const*)' letter_recog.cpp:(.text+0x1610): undefined reference to `CvANN_MLP::create(CvMat const*, int, double, double)' letter_recog.cpp:(.text+0x1686): undefined reference to `CvANN_MLP_TrainParams::CvANN_MLP_TrainParams(CvTermCriteria, int, double, double)' letter_recog.cpp:(.text+0x16ca): undefined reference to `CvANN_MLP::train(CvMat const*, CvMat const*, CvMat const*, CvMat const*, CvANN_MLP_TrainParams, int)' letter_recog.cpp:(.text+0x16d8): undefined reference to `CvANN_MLP_TrainParams::~CvANN_MLP_TrainParams()' letter_recog.cpp:(.text+0x16ec): undefined reference to `CvANN_MLP_TrainParams::~CvANN_MLP_TrainParams()' letter_recog.cpp:(.text+0x1792): undefined reference to `CvANN_MLP::predict(CvMat const*, CvMat*) const' letter_recog.cpp:(.text+0x18c4): undefined reference to `CvStatModel::save(char const*, char const*) const' letter_recog.cpp:(.text+0x1907): undefined reference to `CvANN_MLP::~CvANN_MLP()' letter_recog.cpp:(.text+0x1921): undefined reference to `CvANN_MLP::~CvANN_MLP()' collect2: ld gab 1 als Ende-Status zurück
-
Du weißt ernsthaft nicht was undefinierte Referenzen sind? Kauf dir ein Anfängerbuch.
-
Hi Janjan,
bin mir nicht ganz sicher ob ich das weiß. Ja ich habe ein Anfängerbuch und vor langem auch mal gelesen ;), habe allerdings schon sehr lange nichts mehr programmiert und mir fehlt die Übung. Also ich denke, dass die .o-Dateien (Objekt-Dateien) nicht richtig zusammengelinkt sind??? Korrigiere mich wenn du's besser weißt! Jedenfalls frage ich mich, wieso dieses Programm aus der openCV diesen Fehler bringt, wo ich doch gar nichts dran verändert habe...?PS: Dachte einmal die Grundlagen von Makefiles und Compilieren verstanden zu haben. Frage mich allerdings, wie ich das für diese "Riesenbib" mache? Folgender Versuch bringt den gleichen Fehler. Wäre wirklich super, wenn mir jemand helfen könnte, wie man das Ding kompiliert.
g++ -Wall -c letter_recog.cpp g++ -Wall -o letter_recog letter_recog.o -I /usr/local/include/opencv -L /usr/local/lib -lm -lcv -lhighgui -lcvaux
-
Die Dokumentation gibt die folgende Kommandozeile an:
g++ -o my_example my_example.cpp -I<opencv_source_dir>/include[/opencv] \ -L<cmake_binary_dir>/lib -lcxcore -lcv -lcvaux -lhighgui -lmlBei dir sieht das anders aus.
Lars
-
manni66 schrieb:
Die Dokumentation gibt die folgende Kommandozeile an:
g++ -o my_example my_example.cpp -I<opencv_source_dir>/include[/opencv] \ -L<cmake_binary_dir>/lib -lcxcore -lcv -lcvaux -lhighgui -lmlBei dir sieht das anders aus.
Lars
Danke! Ich bin gerade noch am Testen, aber das Kompilieren hat jetzt damit schließlich geklappt
