ROS kinetic版本cv_bridge配置opencv2.4.9与默认opencv3冲突的问题

标签: ROS kinetic opencv cv_bridge
10人阅读 评论(0) 收藏 举报
分类:

问题描述:

     目前我们学习ros开发普遍的配置是ubuntu14.04 ros indigo版本,但以后是有需要升级到ubuntu16.04 ros kinetic版本的。这几天在尝试在ros kinetic版本配置opencv2.4.9时遇到了opencv和kinetic的cv_Bridge包不兼容的问题,经过查阅博客和调试,问题解决,主要问题在于ros kinetic版本默认使用opencv3,而我们的人脸识别测试程序使用的是opencv2,在安装好opencv2.4.9后需要修改cv_bridge包中的关联opencv3的部分,记录如下:

    安装好opencv后使用catkin_make命令编译相关的人脸识别程序会出现可以找到opencv头文件,mat数据类型,但提示找不到opencv中的函数,首先可以确定的是opencv已经安装完成,测试用例完美运行,后来怀疑是人脸识别程序中cmakelist存在问题没有包含opencv库,发现网上的各种在cmakelist中添加opencv库的方法均没有效果(我自己的判断是没有必要在cmakelist中添加各种opencv的库,只要确保opencv安装成功,其余的工作会由ros中的cv_bridge包完成),后来在该篇文章中找到了解决办法:

ROS-Kinect cv_bridge的opencv版本兼容问题

解决办法:   

  其中我也认为改cmamkelist没有必要,关键在于ROS kinetic中的cv_bridge中默认使用自带opencv3,而我们人脸识别程序使用的是opencv2,而需要解决cv3和cv2不兼容的问题,解决办法很简单,那就是找到/opt/ros/kinetic/share/cv_bridge/cmake中的cv_bridgeConfig.cmake,使用sudo gedit打开,如上面的文章所说,将文件的94-96行改为原本的使用自带的opencv3的地方改为我们电脑上安装opencv的位置,原文件的94-96行如下所示:

第94-96行:
    if(NOT "include;/opt/ros/kinetic/include/opencv-3.1.0-dev/opencv;/opt/ros/kinetic/include/opencv-3.1.0-dev " STREQUAL " ")
      set(cv_bridge_INCLUDE_DIRS "")
      set(_include_dirs "include;/opt/ros/kinetic/include/opencv-3.1.0-dev/opencv;/opt/ros/kinetic/include/opencv-3.1.0-dev")

这里将其中的opt/ros/kinetic/include/opencv-3.1.0-dev改为我们自己安装的opencv的路径,与上面文章的不同的地方是,我修改后的文件如下:

第94-96行:
    if(NOT "include;/usr/local/include/opencv;/usr/include " STREQUAL " ")
      set(cv_bridge_INCLUDE_DIRS "")
      set(_include_dirs "include;include;/usr/local/include/opencv;/usr/include")

文章中在112行的修改如下:


#112行:set(libraries "cv_bridge;/usr/lib/x86_64-linux-gnu/libopencv_calib3d.so;/usr/lib/x86_64-linux-gnu/libopencv_contrib.so;/usr/lib/x86_64-linux-gnu/libopencv_core.so;/usr/lib/x86_64-linux-gnu/libopencv_features2d.so;/usr/lib/x86_64-linux-gnu/libopencv_flann.so;/usr/lib/x86_64-linux-gnu/libopencv_gpu.so;/usr/lib/x86_64-linux-gnu/libopencv_highgui.so;/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so;/usr/lib/x86_64-linux-gnu/libopencv_legacy.so;/usr/lib/x86_64-linux-gnu/libopencv_ml.so;/usr/lib/x86_64-linux-gnu/libopencv_objdetect.so;/usr/lib/x86_64-linux-gnu/libopencv_ocl.so;/usr/lib/x86_64-linux-gnu/libopencv_photo.so;/usr/lib/x86_64-linux-gnu/libopencv_stitching.so;/usr/lib/x86_64-linux-gnu/libopencv_superres.so;/usr/lib/x86_64-linux-gnu/libopencv_ts.so;/usr/lib/x86_64-linux-gnu/libopencv_video.so;/usr/lib/x86_64-linux-gnu/libopencv_videostab.so")

在这里我们的路径在/usr/local/lib下,同理只要将上面的/usr/lib/x86_64-linux-gnu/路径改为自己的路径即可。

回到catkin_ws中,使用catkin_make编译成功。


查看评论

解决Ubuntu环境下ROS Kinetic中的cv_bridge和自己安装OpenCV 2.4.xx兼容性笔记

我们如果使用的ROS版本为Kinetic,那么ROS一般会默认安装OpenCV3。所以使用cv_bridge的情况下,ROS会自动去调用它自己安装的OpenCV3。但是对于一部分人还是比较习惯使用Op...
  • bigdog_1027
  • bigdog_1027
  • 2018-01-18 12:57:46
  • 172

ros自带opencv版本与rosnode开发所需版本不一致时解决冲突

先设定好rosnode需要的opencv版本 set(OpenCV_DIR /usr/local/opencv2.4.13.1/share/OpenCV) find_package(OpenCV ...
  • xiat5
  • xiat5
  • 2018-02-21 00:15:34
  • 45

ROS-Kinect cv_bridge的opencv版本兼容问题

今天在编译自己的drone_sensor模块的时候(含stereo camera)出现了/home/joey/pfl/ros/src/drone_sensor/src/stereo_camera/Ca...
  • Gauxonz
  • Gauxonz
  • 2016-10-17 21:32:15
  • 4555

ROS, OPENCV3.0, cv_bridge包组合

组合缘由:ROS下需要用到opencv3.0的库函数(而且是opencv_contrib里的库),还必须用到cv_bridge转换。但是发现二进制安装ros-*-cv-bridge时又需要捆绑安装op...
  • u010658879
  • u010658879
  • 2015-07-03 20:55:10
  • 2447

cv_bridge与OpenCV版本问题

问题描述博主在Ubuntu14.04上运行ros jade和OpenCV3.2, 期间遇到了一个问题:cv_bridge需要opencv2.4.8的支持,而我只手动完整的安装了OpenCV3.2.0,...
  • u013832707
  • u013832707
  • 2017-05-23 09:20:19
  • 2095

ros kinetic的cv_bridge修改为基于opencv2.X

ros kinetic带的cv_bridge是基于opencv3.x的,在一些已有的工程项目中需要继续使用opencv2.X。当两个版本opencv共存时,即使修改/opt/ros/kinetic/s...
  • xiat5
  • xiat5
  • 2018-02-23 16:22:49
  • 98

cv_bridge+opencv3.0+ROS Indigo+Clion1.2.2小记

ROS教程在官网Tutorial搞定,不再多言。 indigo之后,ros不再包含opencv package. Opencv将作为系统依赖在CMakeList中进行包发现,如果系统中装有多个版本的c...
  • wanfengyiyue
  • wanfengyiyue
  • 2015-12-23 12:02:25
  • 2415

Ros-Kinetic<使用cv_bridge进行OpenCV和ROS图像处理>

1.环境准备Ubuntu16.04 ROS-kinetic opencv3.3.1 video-stream-opencv 一个USB摄像头video-stream-opencv是USB摄像头驱动,关...
  • Gpwner
  • Gpwner
  • 2018-01-03 15:06:16
  • 420

opencv2.4.13+ros kinetic +ubuntu16.04+iai_kinect2

1、安装ros下kinect2驱动库链接 2、修改ros版本/opt/ros/kinetic/share/cv_bridge/cmake/cv_bridgeConfig.cmake参考...
  • hongliang2009
  • hongliang2009
  • 2017-06-06 20:36:15
  • 1397
    个人资料
    等级:
    访问量: 139
    积分: 52
    排名: 167万+
    文章分类
    文章存档
    最新评论