ROS 小技巧 - OpenCV4 与 CV_Bridge 配合使用

7 篇文章 0 订阅

1. 现象

  • ROS默认的Python版本是3.3,但我系统安装的是OpenCV4.5

  • 如果直接在pkg中使用cv_bridge和opencv4.5就会有问题。

    • 会有一些undefined reference问题
  • 参考资料:

  • 注意,重新编译并不能解决问题

    • kinetic版本下,用OpenCV4.5.0编译cv_bridge失败,原因没细看,感觉上是API改变导致的。

2. 解决

  • 需要修改 cv_bridge 的 cmake 配置文件
  • /opt/ros/kinetic/share/cv_bridge/cmake/cv_bridgeConfig.cmake
# 修改头文件
#if(NOT "include;/opt/ros/kinetic/include/opencv-3.3.1-dev;/opt/ros/kinetic/include/opencv-3.3.1-dev/opencv " STREQUAL " ")
if(NOT "/usr/local/share/opencv4" STREQUAL " ")
  set(cv_bridge_INCLUDE_DIRS "")
  set(_include_dirs "include;/usr/local/include/opencv4;/usr/local/include;/usr/include")
  #set(_include_dirs "include;/opt/ros/kinetic/include/opencv-3.3.1-dev;/opt/ros/kinetic/include/opencv-3.3.1-dev/opencv")

# 修改 so 文件路径
set(libraries "cv_bridge;/usr/local/lib/libopencv_core.so.4.5.0;/usr/local/lib/libopencv_imgproc.so.4.5.0;/usr/local/lib/libopencv_imgcodecs.so.4.5.0;/usr/local/lib/libopencv_calib3d.so.4.5.0;/usr/local/lib/libopencv_highgui.so.4.5.0")
# set(libraries "cv_bridge;/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_core3.so.3.3.1;/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgproc3.so.3.3.1;/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1")
  • 修改 /opt/ros/kinetic/share/cv_bridge/cmake/cv_bridge-extras.cmake
#set(OpenCV_VERSION 3.3.1)
#set(OpenCV_VERSION_MAJOR 3)
#set(OpenCV_VERSION_MINOR 3)
#set(OpenCV_VERSION_PATCH 1)
#set(OpenCV_SHARED ON)
#set(OpenCV_CONFIG_PATH /opt/ros/kinetic/share/OpenCV-3.3.1-dev)
#set(OpenCV_INSTALL_PATH /opt/ros/kinetic)

set(OpenCV_VERSION 4.5.0)
set(OpenCV_VERSION_MAJOR 4)
set(OpenCV_VERSION_MINOR 5)
set(OpenCV_VERSION_PATCH 0)
set(OpenCV_SHARED ON)
set(OpenCV_CONFIG_PATH /usr/local/share/opencv4)
set(OpenCV_INSTALL_PATH /usr/local/)
  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值