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

E_J*_*ovi -4 c++ opencv training-data

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

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
Run Code Online (Sandbox Code Playgroud)

然后,我想通过使用以下方法获取可执行文件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
Run Code Online (Sandbox Code Playgroud)

我得到错误

/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)'
Run Code Online (Sandbox Code Playgroud)


我试着通过查看opecv论坛的文章来解决这个问题,几乎没有发现任何问题.

所以,嗯,任何人都可以帮助我吗?非常感谢..

小智 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
Run Code Online (Sandbox Code Playgroud)