无法从Haartraining教程编译mergevec.cpp

我一直在关注这个教程( http://note.sonots.com/SciSoftware/haartraining.html )做一些哈尔培训。 我目前正在创build训练样本,特别是.vec文件的组合。 我提供了这个( http://note.sonots.com/SciSoftware/haartraining/mergevec.cpp.html )文件以及如何为Linux(Ubuntu 11.04)构build它的说明。 这是我的问题,我无法build立mergevec代码。 唯一的错误是“致命的错误:cvhaartraining.h:没有这样的文件或目录”。 我已经检查,以确保cvhaartraining.h是在mergevec相同的目录,但发现一切都是我所期望的。 在这一点上,我在如何解决这个损失,所以任何帮助将不胜感激。

为了构建mergevec,我发现最简单的方法是编辑CMake配置文件。 在OpenCV 2.3.1中, haartraining目录是在modules/haartraining而在2.4.5中是在apps/haartraining. 无论哪种方式,您感兴趣编辑的文件都称为CMakeLists.txt

最简单的做法是为mergevec添加一个特殊的部分,如下所示:

 # ----------------------------------------------------------- # mergevec # ----------------------------------------------------------- add_executable(opencv_mergevec mergevec.cpp) set_target_properties(opencv_mergevec PROPERTIES DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}" OUTPUT_NAME "opencv_mergevec") 

您可以在安装部分之前添加此权限。 然后将mergevec.cpp放到haartraining目录下,正常建立OpenCV,并且你将得到一个opencv_mergevec二进制文件,它是mergevec.cpp可执行文件。

对于在Ubuntu上苦苦挣扎的其他人,将标志移动到调用的最后,如下所示:

 g++ -I. -o mergevec mergevec.cpp cvboost.cpp cvcommon.cpp cvsamples.cpp cvhaarclassifier.cpp cvhaartraining.cpp `pkg-config --libs --cflags opencv` 

要解决您的问题,键入以下内容:

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

好运易卜拉欣