我一直在按照本教程(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位于同一目录中但是已经发现一切都在我期望的地方。在这一点上,我不知道如何解决这个问题,所以任何帮助将不胜感激。
答案 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
祝你好运
易卜拉欣