我已经在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
为什么在cv_bridge中将OpenCV 3.2硬编码,如何使用OpenCV 3.4重建它?
更新: 我最终安装了OpenCV 3.2,并且可以正常工作。
答案 0 :(得分:0)
因为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