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

ros kinetic带的cv_bridge是基于opencv3.x的,在一些已有的工程项目中需要继续使用opencv2.X。当两个版本opencv共存时,即使修改/opt/ros/kinetic/share/cv_bridge/cmake中的cv_bridgeConfig.cmake,可以成功编译,在程序运行到cv_bridge的一些函数时依然存在错误。因为cv_bridge依赖d库是在opencv3.x下编译的,此时需要把ros涉及的所有opencv统一版本。方法如下:
1.把旧的cv_bridge卸载:

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

2.重新下一个cv_bridge,建议还是下载kinetic版本的:
https://github.com/ros-perception/vision_opencv/tree/kinetic
或者在终端运行

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

3.修改cv_bridge中的cmakelists.txt
将之前的:

find_package(OpenCV 3 REQUIRED
  COMPONENTS
    opencv_core
    opencv_imgproc
    opencv_imgcodecs
 CONFIG
)

修改为:

set(OpenCV_DIR /usr/local/opencv2.4.13.1/share/OpenCV)#此处修改为你的opencv share地址
find_package(OpenCV 2.4.13.1 EXACT REQUIRED)

4.重新编译cv_bridge包:

cd ~/catkin_ws/src/cv_bridge
mkdir build
cd build
cmake ..
make
sudo make install

编译时会出错,需要把cv_bridge/src/cv_bridge.cpp中的

#include 

替换为

#include 

即可。

由于以前的cv_bridge卸载了,在cmakelists.txt中需要添加一句话,
set(cv_bridge_DIR /usr/local/share/cv_bridge/cmake) //在find_package前面
查找cv_bridge.config.cmake的路径。

5.python调用cv_bridge时,需要在~/.bashrc中添加

export LD_LIBRARY_PATH=/usr/local/lib/

你可能感兴趣的:(ros,linux,/,ubuntu)