我是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论坛的文章来解决这个问题,但几乎找不到任何内容。
所以,嗯,有人可以帮帮我吗?非常感谢..
答案 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