#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
Удачи
Ибрагим