无法从Haartraining教程编译mergevec.cpp

时间:2011-05-21 03:54:47

标签: linux ubuntu opencv g++ compilation

我一直在按照本教程(http://note.sonots.com/SciSoftware/haartraining.html)进行一些Haar培训。我目前只是在创建训练样本,特别是组合.vec文件。我提供了这个(http://note.sonots.com/SciSoftware/haartraining/mergevec.cpp.html)文件以及如何为Linux构建它的描述(Ubuntu 11.04)。这就是我的问题,我无法构建mergevec代码。唯一的错误是“致命错误:cvhaartraining.h:没有这样的文件或目录。”我已经检查过以确保cvhaartraining.h与mergevec位于同一目录中但是已经发现一切都在我期望的地方。在这一点上,我不知道如何解决这个问题,所以任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:4)

为了构建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可执行文件。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

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
祝你好运 易卜拉欣