如何将RealSense2OpenCV源码加入到CMake的编译中?


简短版

我想把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没有在范围内声明)。

冗长的版本

我目前正试图为英特尔RealSense相机d435编写一个程序。我正在使用两个库。OpenCV和librealsense2(摄像头的实际库)。我先用VCPKG把包加载进去,这对我的本地机器来说是可行的,但我无法在RPi 3上正确编译。我决定将源文件与项目捆绑在一起是个好主意,但我无法让它工作。我得到了一个又一个的错误。

EDIT 1

当我在我的本地windows机器上编译时,我得到了错误信息 Cannot open include file: 'opencv2/opencv_modules.hpp': No such file or directory. 而且,在我的Pi上,它给出了一堆与RealSense文件本身有关的错误(没有检查它们全部,有780个)。

EDIT 3

正如 @squareskittles 指出的那样。我解决了与我的本地windows版本有关的问题,但对于pi,我仍然有新的错误问题。

据我所知,这个错误说明它找不到这个程序。opengl_config.cmake 文件夹 tools, srcexamples (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 个错误似乎是,这两个 librealsenseopencv 在卸载配置中具有相同的名称。能否在卸载配置中使用相同的名称。add_custom_target 可以在不影响 cmake 构建过程的情况下,安全地更改卸载的功能吗?

EDIT 5

它成功地编译了realsense2库(据我所知),但它不能打开的。opencv2/core.hpp 源文件。不知道为什么找不到它。

EDIT 6

所以我做了更多的调查,Opencv使用一个头文件来检查你使用的模块。问题是它不能正确地生成一个. 我不知道如何做到这一点,但我会做一些更多的挖掘,找出

解决方案:

如果你想在你的CMake项目中直接包含OpenCV和RealSense2的源文件,你应该使用 add_subdirectory() 命令来告诉CMake在每个目录中寻找。一定要提供 顶层 CMakeLists.txt文件,否则它们将不会被完全配置。

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

稍后在你的CMakeLists.txt文件中,你需要使用在这些子仓库中定义的CMake变量和目标,以便将这些库中的每一个都包含在 你的 可执行文件。例如,你可能需要链接额外的OpenCV组件,如

# 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等,这取决于你使用的是什么OpenCV功能。

给TA打赏
共{{data.count}}人
人已打赏
未分类

Python函数无法启动。Microsoft.WindowsAzure.Storage

2022-9-8 4:02:16

未分类

使用Bootstrap和CSS将项目居中

2022-9-8 4:02:18

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索