ros kinetic 自带opencv3 与 opencv 2 的兼容问题

本文详细介绍了如何解决ROS Kinetic自带的OpenCV3与系统中基于OpenCV2的项目冲突问题。通过分析问题,提出两种解决方法:修改cv_bridge的CMakeLists.txt文件浅度依赖,或者卸载并重新编译cv_bridge以适应OpenCV2.x版本。文章还包含了执行步骤、影响分析以及相关路径说明。
摘要由CSDN通过智能技术生成

问题分析

自己写的系统必须基于opencv 2.x,而ros kinetic自带了opencv3的版本。于是在编译时报错:

/usr/bin/ld: CMakeFiles/xxxx.cpp.o: undefined reference to symbol '_ZN2cv6String10deallocateEv'
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_core3.so.3.3.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
CMakeFiles/xxxx/build.make:192: recipe for target '../xxxx' failed

而自己的系统里 Pangolin 等一堆库都基于2.x版本opencv了,不好再做调整,于是只好强行调整ros的opencv依赖来使其适应我的系统了。

ros中用到opencv的地方是从话题中读取图像,如 /camera/image_raw话题中抓取 rgb或depth图像保存为cv::Mat,所需用到的ros包是cv_bridge。

因此核心问题是: ros的包cv_bridge使用默认opencv3编译,而自身系统使用opencv 2.x编译,opencv的混合编译带来了错误。

 

问题解决方法

方法一共有两种:

1) 浅依赖可以直接调整cv_bridge的cmake文件,详细可参考:https://www.mobibrw.com/2017/8718

这个方法可以帮助我通过编译,然而实际

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值