参考文献:
https://blog.csdn.net/u011557212/article/details/54706966
https://blog.csdn.net/m0_37811342/article/details/79971993
https://blog.csdn.net/m0_37811342/article/details/79971993
问题描述:
ROS kinetic版本cv_bridge包默认与opencv3关联,故当需要使用cv_bridge时仅将opencv默认路径修改为opencv2是不能解决问题的,需要修改/opt/ros/kinetic/share/cv_bridge/cmake中的cv_bridgeConfig.cmake文件
1.打开/opt/ros/kinetic/share/cv_bridge/cmake中的cv_bridgeConfig.cmake文件
sudo vim /opt/ros/kinetic/share/cv_bridge/cmake/cv_bridgeConfig.cmake
2.修改文件中第94~96行内容
1)原始内容
if(NOT "include;/opt/ros/kinetic/include/opencv-3.3.1-dev;/opt/ros/kinetic/include/opencv-3.3.1-dev/opencv " STREQUAL " ")
set(cv_bridge_INCLUDE_DIRS "")
set(_include_dirs "include;/opt/ros/kinetic/include/opencv-3.3.1-dev;/opt/ros/kinetic/include/opencv-3.3.1-dev/opencv")
2)修改后
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")
3.修改文件中第112行
1)原始内容
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")
2)修改后内容
set(libraries "cv_bridge;/usr/local/lib/libopencv_calib3d.so;/usr/local/lib/libopencv_contrib.so;/usr/local/lib/libopencv_core.so;/usr/local/lib/libopencv_features2d.so;/usr/local/lib/libopencv_flann.so;/usr/local/lib/libopencv_gpu.so;/usr/local/lib/libopencv_highgui.so;/usr/local/lib/libopencv_imgproc.so;/usr/local/lib/libopencv_legacy.so;/usr/local/lib/libopencv_ml.so;/usr/local/lib/libopencv_objdetect.so;/usr/local/lib/libopencv_ocl.so;/usr/local/lib/libopencv_photo.so;/usr/local/lib/libopencv_stitching.so;/usr/local/lib/libopencv_superres.so;/usr/local/lib/libopencv_ts.a;/usr/local/lib/libopencv_video.so;/usr/local/lib/libopencv_videostab.so")
其中路径/usr/local/lib为你自己的opencv2中cv_bridge包中libopencv_...等文件在系统中的绝对路径
ubuntu 16.04 安装opencv 2.4.13见