【问题标题】:How to link OpenCV 4 with ROS (cv_bridge)如何将 OpenCV 4 与 ROS (cv_bridge) 连接起来
【发布时间】:2020-03-17 14:22:57
【问题描述】:

我在 ROS Melodic 中使用 OpenCV,我现在需要使用 cv::dnn(深度神经网络),它包含在我已安装的 OpenCV 4 中,并将其设置为我的 CMakeLists.txt,如下所示:

find_package(OpenCV 4 REQUIRED )

这是我在 ros 工作区中执行命令时收到的警告:catkin_make

/usr/bin/ld:警告:libopencv_imgcodecs.so.3.2,需要 /opt/ros/melodic/lib/libcv_bridge.so,可能与 libopencv_imgcodecs.so.4.1

我忽略了这一点,但我现在无法使用 opencv rosrun 任何节点。

谁能帮我在cv_bridge(ROS旋律系统)中设置OpenCV 4?

提前致谢。 最好的祝福, 约万。

【问题讨论】:

    标签: opencv ros opencv4


    【解决方案1】:

    一个简单的解决方案是从https://github.com/ros-perception/vision_opencv/releases 下载合适版本的vision_opencv。然后将内容(包含一些包cv_bridgeimage_geometryopencv_testsvision_opencv)提取到catkin 工作区中src 文件夹的vision_opencv 文件夹中。

    现在catkin_makecatkin build 您的工作区和必要的ros opencv 包将编译并链接到本地​​vision_opencv 文件夹。在此之前您可能需要清理工作区。

    【讨论】:

      【解决方案2】:

      ROS 附带了一个用于图像相关内容的 opencv。一些 ROS 包,例如 cv_bridge、image_geometry 等,默认使用这个 opencv。这就是您出现分段错误的原因,因为不同的 opencv 版本以不同的格式存储图像。

      如果你想在你的节点中使用自定义的 opencv,你必须在你的工作目录中包含这些包并编译它们。例如,您必须在节点的 cmakelist 中包含 cv_bridge source code

      【讨论】:

      • 我明白,但你能解释一下怎么做吗?
      • 在catkin工作空间源文件夹中克隆cv_bridge,使用catkin_make编译时,指定自己的opencv目录:-DOpenCV_DIR=PATH_TO_YOUR_OPENCV。像这样: catkin_make --cmake-args -DOpenCV_DIR=PATH_TO_OPENCV
      • 然后在你的 ROS 节点(来自节点的 cmakelists.txt)中包含 cv_bridge 时,指定你编译的 cv_bridge,这样它就不会使用默认的了。
      • 但是您的节点如何获取图像输入?从传感器?从另一个节点?从网络/文件系统?其他一些 ros 包可能需要根据它进行编译。有一个完整的答案可以从 ROS 中删除所有 opencv 内容并在这里重新构建它们:answers.opencv.org/question/211349/…,但我认为只需重新编译一些特定的包就足够了。
      • 我的节点通过 cv_bridge 从另一个节点获取图像。如何在节点的 CMakeLists.txt 中指定我编译的 cv_bridge?另外,当我在工作区中使用 catkin_make 时,我应该使用哪条路径连接 OpenCV?当我使用 cmake 命令安装(构建)OpenCV4 时,我使用了前缀 CMAKE_INSTALL_PREFIX=/usr/local。
      猜你喜欢
      • 2020-07-05
      • 2018-08-19
      • 2016-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-06
      • 2023-03-20
      • 1970-01-01
      相关资源
      最近更新 更多