Ubuntu18.04+ROS melodic+opencv4 修改cv_bridge配置文件,解决ROS使用不同版本opencv的冲突问题

问题

在如标题所示配置下运行开源代码时,opencv中的某些函数无法正常使用,例如imshow无法显示灰度图像,distanceTransform报错等,使用时会报如下错误

OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /build/opencv-L2vuMj/opencv-3.2.0+dfsg/modules/imgproc/src/color.cpp, line 9716
terminate called after throwing an instance of ‘cv::Exception’
what(): /build/opencv-L2vuMj/opencv-3.2.0+dfsg/modules/imgproc/src/color.cpp:9716: error: (-215) scn == 3 || scn == 4 in function cvtColor

这是因为ROS自带的opencv版本为3.2.0,在安装opencv4后导致使用不同版本的opencv报错,需要给ROS指定统一版本的opencv,解决方法是修改cv_bridge配置文件,使ROS去调用自己安装的opencv版本。
参考: http://www.bubuko.com/infodetail-3737196.html.

修改cv_bridge文件

可以直接去看这个大佬:https://blog.csdn.net/bigdog_1027/article/details/79092263.

首先找到cv_brige文件,使用gedit打开

cd /opt/ros/melodic/share/cv_bridge/cmake/ 
sudo gedit cv_bridgeConfig.cmake  

将此处指定的头文件目录改到自己安装的头文件目录下
在这里插入图片描述
之后再将指定库文件也修改为自己安装的opencv库文件
在这里插入图片描述
与头文件直接写入目录的方式不同,库文件是将文件本身写入到配置文件中,库文件有很多,只需写入几个核心常用的即可,后续用到其他的可以添加。

修改完cv_bridge配置文件后,在CMakeLists文件中使用find_package找到cv_bridge,就可以在工程中使用自己的opencv版本。

find_package(

cv_bridge

)

还可以通过修改cv_bridge-extras.cmake文件使编译时输出正确的版本号和路径(具体原因参考上方链接),修改与否对使用opencv无影响。
同样是在 /opt/ros/melodic/share/cv_bridge/cmake/ 下打开,修改文件中内容:
在这里插入图片描述

万分感谢
https://blog.csdn.net/bigdog_1027/article/details/79092263.
http://www.bubuko.com/infodetail-3737196.html.

### 回答1: 要在ROS Melodic中安装OpenCV,可以按照以下步骤进行操作: 1. 首先,确保已经安装了ROS Melodic。如果没有安装,请先安装ROS Melodic。 2. 打开终端,输入以下命令以更新软件包列表: ``` sudo apt-get update ``` 3. 然后,输入以下命令以安装OpenCV: ``` sudo apt-get install ros-melodic-opencv ``` 4. 安装完成后,可以使用以下命令检查OpenCV是否已经安装成功: ``` rospack find opencv ``` 如果输出结果为“/opt/ros/melodic/share/opencv”,则说明OpenCV已经成功安装。 5. 如果需要使用OpenCV的其他功能,可以安装相应的软件包。例如,如果需要使用OpenCV的Python接口,可以使用以下命令安装: ``` sudo apt-get install python-opencv ``` 如果需要使用OpenCV的GUI功能,可以使用以下命令安装: ``` sudo apt-get install libopencv-dev ``` 安装完成后,就可以在ROS Melodic使用OpenCV了。 ### 回答2: Opencv是用于图像处理和计算机视觉的广泛使用的开源库。而ROS(Robot Operating System)是个用于机器人开发的操作系统,ROS允许机器人软件在不同的平台上运行,包含许多内在的库,用于帮助机器人的传感、控制和导航等。 在ROS的各种机器人应用中,Opencv的集成是很常见的。尤其是在使用机器人进行视觉检测、目标追踪或SLAM时,Opencv是必须的。下面是在ROS Melodic下安装Opencv的步骤: 1. 安装Opencv的相关依赖包 ``` sudo apt-get install libopencv-dev python-opencv ``` 2. 在ROS Melodic中安装Opencv ``` sudo apt-get install ros-melodic-vision-opencv ``` 3. 更新ROS Melodic的环境变量 ``` echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source ~/.bashrc ``` 4. 在ROS使用OpencvROS使用Opencv时,需要添加以下行到C++代码的头文件中: ``` #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> ``` 同时,在编译代码时,需要链接Opencv库: ``` rosbuild_add_executable(image_view src/image_view.cpp) target_link_libraries(image_view ${OpenCV_LIBRARIES}) ``` 以上是在ROS Melodic下安装Opencv的简要步骤,特别是第二步是安装与ROS Melodic版本兼容的Opencv库,确保机器人中所有程序的兼容性和稳定性。 ### 回答3: 在安装ROS Melodic之后,需要安装OpenCV才能进行更多图像处理的工作。在安装OpenCV之前,需要先确认电脑上是否已经有OpenCV。可以通过以下命令来检查: ```bash pkg-config --modversion opencv ``` 如果已经有安装的OpenCV版本,则不需要安装OpenCV。 如果电脑上没有安装OpenCV,那么需要执行以下命令来安装: ```bash sudo apt-get update sudo apt-get install ros-melodic-vision-opencv ``` 执行上述命令后,系统将会安装ROS Melodic版本所对应的OpenCV包。这个包将会包含一些基本的计算机视觉和图像处理的功能,包括图像读取、二值化、边缘检测、哈希直方图等等应用。 在安装OpenCV之后,需要配置一些环境变量,以便让ROS能够使用OpenCV这个库。可以把以下的命令添加到`.bashrc`文件中: ```bash echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc echo "source /usr/share/opencv4/setup.bash" >> ~/.bashrc ``` 以上命令来配置ROSOpenCV的环境变量, 让电脑能够有更好的支持ROSOpenCV基于ROS的代码开发。如果以上的命令不能正常工作,那么需要手动添加`/usr/share/opencv4/setup.bash`路径。 最后,重新启动终端,或者使用`source ~/.bashrc`命令来让修改的`.bashrc`文件生效。 现在,ROS Melodic已经准备好使用OpenCV库进行更多的图像处理和计算机视觉的相关工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值