我尝试学习opencv_train_features时c ++编译错误

时间:2014-12-15 10:10:16

标签: c++ opencv training-data

我是jackaroo学习如何训练opencv的功能,我在网址下引用这些功能。

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


上面的文章作者建议学习他的项目,就像这里一样。

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

我收到错误

/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)'


我试着通过浏览opecv论坛的文章来解决这个问题,但几乎找不到任何内容。

所以,嗯,有人可以帮帮我吗?非常感谢..

1 个答案:

答案 0 :(得分: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