我一直在关注这个教程( 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
好运易卜拉欣