Ubuntu18.04+ROS+OpenCV4.5.x编译时报错terminate called after throwing an instance of ‘cv::Exception‘解决方法

一、问题描述

在Ubuntu18.04+ROS+OpenCV4.5.x环境下编写简单代码测试OpenCV。在调用catkin_make编译后报错如下。

Failed to load module "xxxxxxxxxxxxxxxxxx" terminate called after throwing an instance of 'cv::Exception'

出现的问题是ROS无法调用部分OpenCV函数。原因是自己手动安装了OpenCV4.5.x等其他非ROS自带的版本。ROS在调用时出错。由于cv_bridge是OpenCV图像与ROS图像转换的桥梁。因此需要修改cv_bridge的有关配置文件使ROS去调用自己安装的OpenCV版本。

二、解决方法

打开终端并进入cv_bridge配置文件所在目录,并用gedit指令打开该配置文件。终端输入如下

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

 第一处将头文件指定到自己安装的文件目录下

if(NOT "include;/usr/include;/usr/include/opencv;/usr/include/opencv2 " STREQUAL " ")
  set(cv_bridge_INCLUDE_DIRS "")
  set(_include_dirs "include;/usr/include;/usr/include/opencv")

 第二处将库文件指定到自己安装的文件目录下

set(libraries "cv_bridge;/usr/local/lib/libopencv_core.so.4.5.3;/usr/local/lib/libopencv_imgproc.so.4.5.3;/usr/local/lib/libopencv_imgcodecs.so.4.5.3;/usr/local/lib/libopencv_calib3d.so.4.5.3;/usr/local/lib/libopencv_highgui.so.4.5.3")

 修改版本后可套用。保存后即可。

在我们修改cv_bridge的配置文件后,只需要在我们所建立的工程包的CMakeLists.txt内的find_package语句中加入cv_bridge和OpenCV REQUIRED。

find_package(catkin REQUIRED COMPONENTS
  cv_bridge
  OpenCV REQUIRED
  roscpp
)

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值