Невозможно скомпилировать mergevec.cpp из учебника Haartraining - PullRequest
5 голосов
/ 21 мая 2011

Я следовал этому уроку (http://note.sonots.com/SciSoftware/haartraining.html), чтобы провести тренировку Хаара.В настоящее время я застрял в создании обучающих образцов, в частности, объединения файлов .vec.Мне предоставляется этот (http://note.sonots.com/SciSoftware/haartraining/mergevec.cpp.html) файл и описание того, как его собрать для Linux (Ubuntu 11.04).Здесь кроется моя проблема, я не могу собрать код mergevec.Единственная ошибка - «фатальная ошибка: cvhaartraining.h: такого файла или каталога нет».Я проверил, чтобы убедиться, что cvhaartraining.h находится в том же каталоге, что и mergevec, но обнаружил, что все в порядке, где я ожидал.На данный момент я не знаю, как решить эту проблему, поэтому любая помощь будет принята с благодарностью.

Ответы [ 3 ]

4 голосов
/ 30 мая 2013

Для сборки 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 голос
/ 25 февраля 2016

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

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

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

1 голос
/ 24 февраля 2014

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

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