2011-05-21 61 views
5

我一直在關注本教程(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位於同一個目錄中,但發現所有內容都符合我的預期。在這一點上,我對如何解決這個問題有所失望,所以任何幫助將不勝感激。無法從Haartraining教程編譯mergevec.cpp

+1

嘗試在編譯標誌中添加'-I.'。 – 2011-05-21 08:45:59

+0

你是一個救命的人 – 2011-05-21 14:36:10

+1

同樣的問題在這裏,我應該在哪裏添加'-I'? original build命令:'g ++ \'pkg-config --cflags opencv \'''pkg-config --libs opencv \'-o mergevec mergevec.cpp cvboost.cpp cvcommon.cpp cvsamples.cpp cvhaarclassifier.cpp cvhaartraining.cpp ' – 2013-05-05 20:54:45

回答

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可執行文件。

+0

這也適用於Windows – fiat 2014-09-06 00:01:17

1

對於其他人有這個在Ubuntu上掙扎,移動標誌來調用的結尾,就像這樣:

g++ -I. -o mergevec mergevec.cpp cvboost.cpp cvcommon.cpp cvsamples.cpp cvhaarclassifier.cpp cvhaartraining.cpp `pkg-config --libs --cflags opencv` 
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 

好運 Ibrahim