ubuntu18.04依赖于OpenCV3.4.10/4.6.0版本的两种cv_bridge使用

前言

ROS原装的cv_bridge位于/opt/ros/melodic/include/cv_bridge。它依赖于OpenCV 3.2

在当前ROS包中为了使用基于新的OpenCV 3.4.10cv_bridge,网上有博客说修改原来cv_bridge的链接库到自己的新的OpenCV,其实我也试过。但可能会导致其他基于cv_bridge的ros工具不可用。此处不建议


正文

导言

建议下载cv_bridge源码
如果使用OpenCV 3.4.10进行编译,则cv_bridge需要下载melodic版本
但是如果使用的是OpenCV 4.6.0,则cv_bridge需要下载noetic版本,此处经验凡是基于OpenCV 4.6.0的ros包估计都得是下载noetic版本的。

步骤一: 下载源码

cd ~/tools_ws/src
# opencv3.4.10 
git clone -b melodic https://github.com/ros-perception/vision_opencv.git
# opencv4.6.0
git clone -b noetic https://github.com/ros-perception/vision_opencv.git

步骤二: 编译源码

修改cv_bridgeCMakeList.txt文件,在开头部分加入依赖的新的OpenCV位置,参照如下格式:

cmake_minimum_required(VERSION 2.8)
project(cv_bridge)

find_package(catkin REQUIRED COMPONENTS rosconsole sensor_msgs)

set(OpenCV_DIR "/usr/local/share/OpenCV") #使用opencv3.4.10适配cv_bridge
set(OpenCV_DIR "/usr/local/lib/cmake/opencv4") #使用opencv4.6.0适配cv_bridge

然后直接catkin_make
此时在~/tools_ws/devel/share/cv_bridge/cmake已经生成了cv_bridgeConfig.cmake文件。

步骤三: 引入使用

引入自己的ROS包使用
首先确定find_package()命令可以找到刚才目录/home/user/tools_w/devel/share/cv_bridge/cmake

一般打开~/.bashrc中查看

PKG_CONFIG_PATH=/home/user/tools_w/devel/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH

自己可在终端 echo $PKG_CONFIG_PATH确认路径能搜索的到。

我的CMakeList.txt文件示例如下:

set(OpenCV_DIR /usr/local/share/OpenCV)
find_package(OpenCV 3 REQUIRED)
message(STATUS "OpenCV_INCLUDE_DIR: ${OpenCV_INCLUDE_DIRS}")

set(cv_bridge_DIR /home/user/catkin_ws/devel/share/cv_bridge/cmake)
find_package(cv_bridge)
message(STATUS "cv_bridge_LIBS: ${cv_bridge_LIBRARIES}")

add_executable(node src/node.cpp)
target_link_libraries(node ${OpenCV_LIBS} ${catkin_LIBRARIES} ${cv_bridge_LIBRARIES})

可以正常使用了。

Issue1

出现类似 undefined_reference_to的问题都是没有链接库,所以注意target_link_libraries()

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值