【问题标题】:Why cv_bridge uses OpenCV 3.2 in ROS Melodic?为什么 cv_bridge 在 ROS Melodic 中使用 OpenCV 3.2?
【发布时间】:2019-06-01 18:34:03
【问题描述】:

我在 Ubuntu 18 中安装了 OpenCV 3.4。我还根据网站说明安装了 ROS Melodic。但是,我不断收到需要 libopencv_core.so.3.2 的错误。

我已经将我的 CMakeLists 文件设置为指向 OpenCV 3.4。 但是,我在文件中发现:

/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake

opencv3.2 中有以下行硬编码:

set(libraries "cv_bridge;/usr/lib/x86_64-linux-gnu/libopencv_core.so.3.2.0;/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2.0;/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0").

我尝试将其更改为 3.4,但无法重建它。

我得到的错误是:

/opt/ros/melodic/lib/image_view/image_view: error while loading shared libraries: libopencv_core.so.3.2: cannot open shared object file: No such file or directory

为什么 OpenCV 3.2 硬编码在 cv_bridge 中,我如何使用 OpenCV 3.4 重建它?

更新: 我最终安装了 OpenCV 3.2,它工作正常。

【问题讨论】:

    标签: opencv ros


    【解决方案1】:

    因为opencv开发速度比ROS单个模块快很多。而且很多 ROS 模块在有人离职后就贬值了。

    但这绝不是一天的结束(对于新手来说可能是一天的结束)。您可以使用任何版本的 opencv 核心函数(除了 imshow 类型的函数)直接构建它,其他版本应该可以正常运行。

    最简单的做法是:在控制台中执行catkin_make之前尝试执行如下

    export CMAKE_PREFIX_PATH=/usr/local:$CMAKE_PREFIX_PATH
    export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
    

    在执行 find_package(需要 OpenCV 3.X.0)时,这应该优先于您的自定义 OpenCV 安装。然后编译并使用该版本的功能。

    好吧,如果您确实必须使用 3.4,那么我认为您必须构建 ros 版本的 opencv 和图像传输以及 cvbridge 到 3.4,如果这是您的目标。

    你可以在这里找到链接https://github.com/ros-gbp/opencv3-release他们提供的最高似乎是3.3

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      相关资源
      最近更新 更多