当前位置: 首页 > news >正文

ROS自带的OpenCV库和自己安装版本冲突问题现象及解决方法

文章目录

  • 1. 问题现象
    • 1.1 编译过程警告
    • 1.2 程序运行报错
  • 2. 分析问题原因
  • 3. 解决方法

1. 问题现象

1.1 编译过程警告

warning: lipopencv_improc.so.406, needed by /usr/local/lib/libopencv_xfeatures2d.so.4.6.0, 
may conflict with libopencv_imgproc.so.4.2

1.2 程序运行报错

terminate called after throwing an instance of 'cv::Exception'
error:(-4:Insufficient memory) Failed to locate 142099092348209 bytes in function 'OutOfMemoryError'
REQUIRED process has died!

2. 分析问题原因

根据编译过程提示是opencv版本冲突问题,仅以警告形式出现,程序可以编译通过并运行,但是运行过程中报错。
使用命令$ ldd <exe文件路径> | grep opencv查看库链接关系:

libopencv_core.so.406 => /usr/local/lib/libopencv_core.so.406 (0x00007febe47fc000)
libopencv_xfeatures2d.so.406 => /usr/local/lib/libopencv_xfeatures2d.so.406 (0x00007febe3f25000)
libopencv_imgcodecs.so.406 => /usr/local/lib/libopencv_imgcodecs.so.406 (0x00007febe25f0000)
libopencv_imgproc.so.406 => /usr/local/lib/libopencv_imgproc.so.406 (0x00007febe0a6d000)
libopencv_features2d.so.406 => /usr/local/lib/libopencv_features2d.so.406 (0x00007febded2f000)
libopencv_flann.so.406 => /usr/local/lib/libopencv_flann.so.406 (0x00007febd8b7a000)
libopencv_core.so.4.2 => /usr/local/lib/libopencv_core.so.4.2 (0x00007febe47fc000)
libopencv_xfeatures2d.so.4.2 => /usr/local/lib/libopencv_xfeatures2d.so.4.2 (0x00007febe3f25000)
libopencv_imgcodecs.so.4.2 => /usr/local/lib/libopencv_imgcodecs.so.4.2 (0x00007febe25f0000)
libopencv_imgproc.so.4.2 => /usr/local/lib/libopencv_imgproc.so.4.2 (0x00007febe0a6d000)
libopencv_features2d.so.4.2 => /usr/local/lib/libopencv_features2d.so.4.2 (0x00007febded2f000)
libopencv_flann.so.4.2 => /usr/local/lib/libopencv_flann.so.4.2 (0x00007febd8b7a000)

看到每个opencv动态链接库被链接到了两个版本,分析原因为ROS Noetic安装中会自带OpenCV 4.2库和cv_bridge,而我自己安装使用了OpenCV 4.6和OpenCV_contrib 4.x,两者造成了冲突,cv_bridge的冲突通过修改cmake文件更改所使用的OpenCV库路径可以解决,具体参考以下方法:
REF:https://blog.csdn.net/qq_34213260/article/details/123761580

3. 解决方法

在工程的CMakeList.txt中指定工程所使用的OpenCV库的具体版本,可以通过设置精确库路径

set(OpenCV_DIR "<OpenCVConfig.cmake文件的绝对路径>")
http://www.lryc.cn/news/368292.html

相关文章:

  • html+CSS+js部分基础运用19
  • 探索 Debian 常用命令:掌握 Linux 系统管理的重要一步
  • 「C系列」C 作用域规则
  • 【机器学习基础】Python编程10:五个实用练习题的解析与总结
  • 【设计模式】结构型设计模式之 门面模式
  • MAC地址简介
  • 五种网络IO模型
  • VSCode超过390万下载的请求插件
  • 前端 JS 经典:下载的流式传输
  • k8s面试题大全,保姆级的攻略哦(三)
  • 从年金理论到杠杆效应,再到财务报表与投资评估指标
  • K8S - 用kubectl远程访问内网的k8s集群
  • STM32F103C8移植uCOSIII并以不同周期点亮两个LED灯(HAL库方式)【uCOS】【STM32开发板】【STM32CubeMX】
  • 【c语言】qsort函数及泛型冒泡排序的模拟实现
  • MySQL之多表查询—表子查询
  • Java 18风暴来袭:解锁编程新纪元
  • 文件操作(Python和C++版)
  • Git【版本控制命令】
  • 打字侠是一款PWA网站,如何下载到电脑桌面?
  • Scikit-learn使用步骤?使用场景?
  • MySQL 5.7详细下载安装配置教程(MySQL 5.7安装包)_mysql5.7的安装教程
  • 电阻十大品牌供应商
  • 深度学习复盘与论文复现C
  • 海洋日特别活动—深海来客——可燃冰
  • Web前端放图片位置:深入探索与最佳实践
  • leetcode-02-[977]有序数组的平方[209]长度最小的子数组[59]螺旋矩阵II
  • Spring Cloud Gateway CORS 跨域方案
  • 高考后志愿填报信息采集系统制作指南
  • Python使用Flask构建简单的web应用
  • 看似不同的事情,却是相同的坑