Ubuntu18.04+ROS melodic+opencv4.3.0 修改cv_bridge配置文件,解决ROS使用不同版本opencv的冲突问题
在ros下使用opencv读取图像话题时,在OpenCV图像与ROS图像之间的转换中会使用到cv_bridge。由于自己安装了opencv4.3.0与ros自带的opencv发生冲突而有问题。因此需要解决cv_bridge。
在此特别特别感谢
链接1:
https://blog.csdn.net/hongge_smile/article/details/105656702
链接2:
https://blog.csdn.net/bigdog_1027/article/details/79092263
两位博主的博客!解决了我的大问题。
修改cv_bridge的配置文件,使得cv_bridge去调用我们自己安装的OpenCV版本,具体方式如下。首先打开终端并进入
首先cv_bridge配置文件所在目录,并用gedit指令打开该配置文件。
$ cd /opt/ros/melodic/share/cv_bridge/cmake/
$ sudo gedit cv_bridgeConfig.cmake
大概在90多行,对如下的内容进行修改。将此处指定的头文件目录改到自己安装的头文件目录下。我的版本是4,3,0。安装在usr/local/include下。所以我的修改后的内容为:
if(NOT "include;/usr/local/include;/usr/local/include/opencv4" STREQUAL " ")
set(cv_bridge_INCLUDE_DIRS "")
set(_include_dirs "include;/usr/local/include;/usr/local/include/opencv4;/usr/include")
之后再将指定库文件也修改为自己安装的opencv库文件,大概在120多行。OpenCV的库文件有很多种,通常都将core、highgui、imgproc等常用的库文件写入到配置文件中,万一遇到要用的函数的库文件没有包含在配置文件中只要手动添加就可以。
我的版本是4.3.0,所以修改内容是:
set(libraries "cv_bridge;/usr/local/lib/libopencv_core.so.4.3.0;/usr/local/lib/libopencv_imgproc.so.4.3.0;/usr/local/lib/libopencv_imgcodecs.so.4.3.0;/usr/local/lib/libopencv_highgui.so.4.3.0")
修改cv_bridge的配置文件结束后,我们只需要在工程的CMakeLists.txt文件中的find_package加入cv_bridge就能够使用自己安装的OpenCV版本。
find_package(
…
cv_bridge
…
)