解决cv_bridge和opencv之间版本匹配问题

128 篇文章 13 订阅
111 篇文章 18 订阅

转载自:解决cv_bridge和opencv之间版本匹配问题 - 知乎

解决cv_bridge和opencv之间版本匹配问题

樱木大王

樱木大王

北京大学 集成电路工程硕士

在机器人、无人机项目中会用到ROS,linux下安装ROS时,cv_bridge默认连接的opencv版本是4.0+。但。。。

很多开源项目支持的opencv版本是2.0+、3.0+,会导致编译失败。

比如:error: ‘CV_RGB2GRAY’ was not declared in this scope

那就需要安装新版本的opencv,并且让cv_bridge和新版本opencv正常连接匹配。

网上大多数经验都是让你找到cv_bridge的cmake文件,修改opencv新版本的路径,

但这种方法治标不治本在很多情况下尤其是代码执行时,依然会报错:

error while loading shared libraries: libopencv_imgcodecs.so.4.2: cannot open shared object file: No such file or directory

或警告:

warning: ../../lib/libopencv_imgproc.so, needed by ../lib/libcv_bridge.so, not found (try using -rpath or -rpath-link)

究其原因,是因为在安装ROS时,cv_bridge默认连接了4.0+版本的opencv进行编译。只修改cvbridgeConfig.cmake中opencv的路径,编译可能没问题,但在代码执行时如果引用到libcv_bridge.so,还是会链接到opencv原来的版本。

所以,解决这个问题最根本的方法,卸载旧的cv_bridge,安装好新版本opencv,然后重新编译新的cv_bridge。

安装步骤:

1.卸载原来版本的cv_bridge

sudo apt-get remove ros-melodic-cv-bridge

2.下载新版本cv_bridge

浏览器打开

GitHub - ros-perception/vision_opencv​

github.com/ros-perception/vision_opencv正在上传…重新上传取消​

选择melodic对应的cv_bridge,

或者直接,

git clone https://github.com/ros-perception/vision_opencv/tree/melodic 

3.修改cv_bridge中的cmakelists.txt

find_package(OpenCV 3.4.10 REQUIRED) //改成你安装的opencv的版本

4.cmake单独编译cv_bridge

在cv_bridge文件夹下,

mkdir build
cd build
cmake ..
make
sudo make install

5.在开源代码需要的cmaklist.txt中添加cv_bridge的cmake路径

set(cv_bridge_DIR /usr/local/share/cv_bridge/cmake)  //在find_package前面

比如,在vinsfusion开源SLAM代码中,只需要在loop_fusion和vins_estimator两个子模块的cmakelist.txt开头添加set,即可完美编译通过。

同理,D435需要的librealsense库也完美编译通过。

编辑于 2021-07-25 16:48

  • 6
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值