Нужна помощь в компиляции этого примера из OpenCV - PullRequest
1 голос
/ 02 февраля 2012

Мне нужна помощь для компиляции этого кода кода :

В нем есть кое-что, что мне нужно для моего проекта, но я не могу его скомпилировать.

Я скомпилирую всю библиотеку «OpenCV» из исходного кода, следуя инструкциям прямо там :

Но есть большие проблемы:

1 - во включаемых файлах в каталоге "opencv2/stitching" нет подкаталога с именем "detail" (он есть в исходных файлах, но не в скомпилированной версии в /usr/local/include/opencv2/stitching).

2 - в текущей версии, в примере, в stitching_detailed.cpp, в этом нет никаких изменений!

Кроме того, у меня не было ошибок при компиляции ... есть только предупреждения для неиспользуемых переменных ...

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

Итак, я использую это для компиляции:

g ++ stitching_detail.cpp -o брошюровщик pkg-config --libs opencv -lopencv_stitching -lopencv_gpu

Но в opencv_stitching много ошибок, таких как:

неопределенная ссылка на `cv :: gpu :: buildWarpCylindricalMaps (cv :: Size_, cv :: Rect_, cv :: Mat const &, cv :: Mat const &, float, cv :: gpu :: GpuMat &, cv :: gpu :: GpuMat &, cv :: gpu :: Stream &) '

Есть ли способ удалить зависимости от opencv_gpu? Потому что единственные проблемы, которые у меня есть сейчас, вызваны этим!

ВАЖНО:

В конфигурации указано, что я хочу скомпилировать OpenCV без CUDA, у меня явно есть следующая сторонняя информация:

- Другие сторонние библиотеки:

- Использовать IPP: НЕТ

- Использовать TBB: НЕТ

- Используйте Cuda: NO

- Используйте Eigen: NO

1 Ответ

2 голосов
/ 02 февраля 2012

Вы получаете эту ошибку, потому что вы скомпилировали библиотеку без поддержки CUDA и есть функции, которым это нужно.Компилятор пытается связать функции cv :: gpu, и они не добавляются в скомпилированную библиотеку, если вы не используете флаг CUDA во время генерации решения CMAKE.Чтобы избежать этого, у вас есть два варианта:

  1. Перекомпилировать OpenCV с флагом CUDA. (сначала вам нужно будет установить все зависимости CUDA) :
  2. Удалить все вызовы cv :: gpu из примера кода.

Если вы в WindowsВ среде, вы можете легко скачать предварительно скомпилированную библиотеку с поддержкой cuda и протестировать код.Если у вас нет поддержки CUDA, возможно, код потерпит крах во время выполнения функций cv :: gpu.

Второй вариант довольно легко сделать.Код объявил с использованием пространства имен cv , поэтому вам нужно просто найти все вызовы gpu: :( имя_функции) и стереть его.Просто позаботьтесь о том, чтобы не использовать аргумент --try_gpu, потому что я не прочитал весь код, и это, вероятно, вызовет некоторые неопределенные поведения во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...