Как включить источник RealSense2 / OpenCV в компиляцию с CMake? - PullRequest
0 голосов
/ 23 апреля 2020

КОРОТКАЯ ВЕРСИЯ

Я хочу связать (не скомпилированные) исходные файлы для OpenCV и librealsense2 с CMake, чтобы я мог скомпилировать его на RPi (или вообще), но я новичок в CMake и не знаю как.

add_executable (CMakeRealSense "CMakeRealSense.cpp" "CMakeRealSense.h")

include_directories(opencv libs/opencv-master/include)
include_directories(realsense2 libs/librealsense-master/include)

Это дает кучу ошибок, связанных с самими файлами RS (X не объявляется в области).

ДЛИННАЯ ВЕРСИЯ

В настоящее время я пытаюсь написать программу для камеры Intel RealSense d435. Я использую две библиотеки. OpenCV и librealsense2 (актуальная библиотека для камеры). Сначала я использовал VCPKG для загрузки пакетов, и это работает для моей локальной машины, но я не могу правильно скомпилировать его на RPi 3. Я решил, что связывание исходных файлов с проектом было бы хорошей идеей, но я не могу заставить его работать. Я получаю одну ошибку за другой.

РЕДАКТИРОВАТЬ 1

Когда я компилирую на своей локальной windows машине, я получаю ошибку Cannot open include file: 'opencv2/opencv_modules.hpp': No such file or directory. И на моем пи он дает кучу ошибок, связанных с самими файлами RealSense (не проверял их все, там, где их 780)

РЕДАКТИРОВАТЬ 3

Как указано @squareskittles , Я исправил проблему, связанную с моей локальной windows версией, но для pi у меня все еще есть проблемы с новыми ошибками.

Из того, что я могу сказать, говорится, что ошибка не может найти папку opengl_config.cmake в папках tools, src и examples (examples будет удалено в дальнейшем, так что это не большая проблема). Последняя ошибка:

CMake Error at libs/librealsense-master/CMake/install_config.cmake:4 (add_custom_target):
  add_custom_target cannot create target "uninstall" because another target
  with the same name already exists.  The existing target is a custom target
  created in source directory
  "/home/pi/.vs/CMakeRealSense/d6128cea-ef93-4c7b-83bb-89ee6315963f/src/libs/opencv-master".
  See documentation for policy CMP0002 for more details.

РЕДАКТИРОВАТЬ 4

Итак, во-первых, я просто добавил папку cmake, содержащую конфигурацию установки, и это работает как, 2-ой ошибкой кажется, что оба librealsense и opencv имеют одинаковое имя в конфигурации удаления. Можно ли безопасно изменить add_custom_target для удаления, не влияя на остальную часть процесса сборки cmake?

EDIT 5

Он успешно компилирует библиотеки realsense2 (насколько я могу судить), но это не могу открыть исходный файл opencv2/core.hpp. Не уверен, почему он не может его найти.

РЕДАКТИРОВАТЬ 6

Так что я сделал ОЧЕНЬ больше копания и по-разному opencv использует файл заголовка, чтобы проверить, какие модули вы используете, проблема в том, что он работает неправильно сгенерировать один . Я не уверен, как это сделать, но мне придется еще немного покопаться, чтобы узнать

1 Ответ

0 голосов
/ 23 апреля 2020

Если вы хотите включить источник OpenCV и RealSense2 в ваш проект CMake напрямую, вы должны использовать команду add_subdirectory(), чтобы указать CMake искать в каждом из каталогов. Обязательно укажите путь к файлу верхнего уровня CMakeLists.txt в каждом из других исходных репозиториев, иначе они не будут настроены полностью:

add_subdirectory(libs/opencv-master)
add_subdirectory(libs/librealsense-master)

Позже в вашем Файл CMakeLists.txt, вам необходимо использовать переменные и цели CMake, определенные в каждом из этих вложенных репозиториев, чтобы включить каждую из этих библиотек в ваш исполняемый файл. Например:

# Define your CMake executable target.
add_executable(CMakeRealSense CMakeRealSense.cpp CMakeRealSense.h)

# Link the OpenCV components and RealSense targets to your executable target.
target_link_libraries(CMakeRealSense PRIVATE opencv_core realsense2)

Возможно, вам также понадобится связать дополнительные компоненты OpenCV, такие как opencv_imgproc, opencv_dnn, opencv_imgcodecs, opencv_videoio, opencv_highgui и др. c, в зависимости от о том, какие функции OpenCV вы используете.

...