Не удается скомпилировать mergevec.cpp из руководства по Haartraining

#linux #ubuntu #opencv #g #compilation

#linux #ubuntu #opencv #g #Сборник

Вопрос:

Я следовал этому руководству (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, но обнаружил, что все находится именно там, где я этого ожидал. На данный момент я не знаю, как это решить, поэтому буду признателен за любую помощь.

Комментарии:

1. Попробуйте добавить -I. к своим флагам компиляции.

2. Здесь та же проблема, куда именно я должен добавить -I ? исходная команда сборки: g `pkg-config --cflags opencv` `pkg-config --libs opencv` -o mergevec mergevec.cpp cvboost.cpp cvcommon.cpp cvsamples.cpp cvhaarclassifier.cpp cvhaartraining.cpp

Ответ №1:

Для создания 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 исполняемым файлом.

Ответ №2:

Для других, кто сталкивается с этим в Ubuntu, переместите флаги в конец вызова, вот так:

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

Ответ №3:

Чтобы устранить вашу проблему, введите следующее:

 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
  

Удачи
Ибрагим