2014-12-15 3 views
-4

Я jackaroo, чтобы узнать, как обучать функции opencv, и я ссылаюсь на них под URL.C++ ошибка компиляции, когда я пытаюсь изучить opencv_train_features

http://coding-robin.de/2013/07/22/train-your-own-opencv-haar-classifier.html


И выше статьи автора Recommand узнать с его проектом, как здесь.

https://github.com/mrnugget/opencv-haar-classifier-training


И я изучаю шаг за шагом, , но в той же форме, после того как я скопировать mergevec.cpp в каталог моих OpenCV и приложения, как и этой

cp src/mergevec.cpp ~/opencv-2.4.9/apps/haartraining 
cd ~/opencv-2.4.9/apps/haartraining 

И потом, я хочу для получения исполняемого файла mergevec с использованием следующих методов:

g++ `pkg-config --libs --cflags opencv` -I. -o mergevec mergevec.cpp\ 
cvboost.cpp cvcommon.cpp cvsamples.cpp cvhaarclassifier.cpp\ 
cvhaartraining.cpp\ 
-lopencv_core -lopencv_calib3d -lopencv_imgproc -lopencv_highgui -lopencv_objdetect 

И я g и др ошибка

/tmp/cc9GpmMW.o: In function `JpgDatasetGenerator::JpgDatasetGenerator(char const*)': 
cvhaartraining.cpp:(.text+0xafd5): undefined reference to `IOutput::createOutput(char const*, IOutput::OutputType)' 
/tmp/cc9GpmMW.o: In function `PngDatasetGenerator::PngDatasetGenerator(char const*)': 
cvhaartraining.cpp:(.text+0xb24d): undefined reference to `IOutput::createOutput(char const*, IOutput::OutputType)' 
cvhaartraining.cpp:(.text+0xb24d): undefined reference to `IOutput::createOutput(char const*, IOutput::OutputType)' 


Я стараюсь sovle проблемы, просматривая статьи opecv Форума и не нашел почти ничего.

Так, гм, может кто-нибудь мне помочь? спасибо большое.

+0

эта проблема не имеет ничего общего с OpenCV «на Сечь»: это просто означает, что ваш файл не может найти реализацию функции «createOutput». Вероятно, вы должны быть связаны с другим объектом или библиотекой, которая его содержит. –

ответ

5

IOutput - это интерфейс, где их методы объявлены на ioutput.h и должны быть реализованы где-то. Я узнал, что они были реализованы на cvsamplesoutput.cpp, поэтому нам просто нужно попросить gcc скомпилировать этот файл. Для этого правильная команда должна быть:

g++ `pkg-config --libs --cflags opencv` -I. -o mergevec mergevec.cpp\ 
cvboost.cpp cvcommon.cpp cvsamples.cpp cvhaarclassifier.cpp\ 
cvhaartraining.cpp cvsamplesoutput.cpp\ 
-lopencv_core -lopencv_calib3d -lopencv_imgproc -lopencv_highgui -lopencv_objdetect 
+0

Он по-прежнему дает мне ошибку привязки - ld: библиотека не найдена для -llibtbb.dylib clang: ошибка: команда компоновщика не удалась с кодом выхода 1 (используйте -v для вызова вызова) – qgicup

+0

Если у вас все еще возникают проблемы с llibtbb .dylib, а затем взгляните на этот ответ: http://stackoverflow.com/a/37259964/435040 – arturgrigor