记录ros下opencv和qt结合时发生的问题

1.编译时对单独一个功能包进行编译,,发生对cvflann,cv::string等的未定义引用

解决方法:在相应功能包的CMakeLists文件中找到“find OpenCV REQUIRED”,在openCV后加上需要的版本号即可,因为有可能在之前的操作中指定了OPENCV默认使用的版本号

2.编译通过后,出现无效指针 realloc(): invalid pointer的问题:编译输出如下

realloc(): invalid pointer: 0xb6268f54 *** 
======= Backtrace: ========= 
/lib/i386-linux-gnu/libc.so.6(+0x767e2)[0xb5d277e2] 
/lib/i386-linux-gnu/libc.so.6(realloc+0x263)[0xb5d2b3e3] 
/usr/lib/i386-linux-gnu/libQt5Core.so.5(_ZN9QListData7reallocEi+0x37)[0xb4752567] 
/usr/lib/i386-linux-gnu/libQt5Core.so.5(_ZN9QListData6appendEi+0x7c)[0xb475264c] 
/usr/lib/i386-linux-gnu/libQt5Core.so.5(_ZN9QListData6appendEv+0x23)[0xb47526d3] 
/usr/lib/i386-linux-gnu/libQt5Core.so.5(+0x17f82e)[0xb483282e] 
/usr/lib/i386-linux-gnu/libQt5Core.so.5(_Z21qRegisterResourceDataiPKhS0_S0_+0x101)[0xb482f211] 
/usr/lib/i386-linux-gnu/libQt5Core.so.5(+0x2a7439)[0xb495a439] 
/usr/lib/i386-linux-gnu/libQt5Core.so.5(+0x52d74)[0xb4705d74] 
/lib/ld-linux.so.2(+0xf216)[0xb7780216] 
/lib/ld-linux.so.2(+0xf2fc)[0xb77802fc] 
/lib/ld-linux.so.2(+0x11df)[0xb77721df] 
======= Memory map: ======== 
08048000-081cb000 r-xp 00000000 08:0c 260629     /home/lcmliao/qttest/v3-build-desktop/v3 
081cb000-081cc000 r--p 00182000 08:0c 260629     /home/lcmliao/qttest/v3-build-desktop/v3 
081cc000-081cd000 rw-p 00183000 08:0c 260629     /home/lcmliao/qttest/v3-build-desktop/v3 
09809000-0982a000 rw-p 00000000 00:00 0          [heap] 
b200c000-b2013000 rw-p 00000000 00:00 0  
..........

(后面还有一长串,我就不复制了)

解决方法:由于我使用的OPENCV是3.3.1版本,当时为了和ros默认的OPENCV版本号统一,结果出现上述问题,通过查阅网上资料尝试重装OPENCV,由于懒得重新下个版本,所以还是装的3.3.1,结果发现还是不行,经师兄提醒,换了2.4.13的版本,结果神奇的事情发生了,就能成功运行了,难道在结合qt的情况下需要OPENCV版本为2.4?有待考证

3.在launch文件中写了 <rosparam command="load" file="$(find map_server)/config/common_config.yaml"/>,map_server是在同级目录下,但是运行launch文件时,报错在/opt/ros/kinetic/share/map_server下找不到文件

解决方法:删除build 和devel文件夹,重新catkin build整个工程,载进行source,重新运行即可

在Ubuntu上一键安装ROSOpenCV,可以按照以下步骤进行操作: 1. 首先,安装ROS。可以使用ROS官方提供的安装脚本进行安装,具体步骤可以参考ROS官方文档。 2. 安装OpenCV。在安装ROS之后,系统会自带一个版本的OpenCV。可以通过查看文件分布来确定OpenCV的安装位置,比如是否有pkgconfig文件夹、opencv.pc文件以及libopencv库的位置。可以参考相关博客或文档来查看这些信息\[1\]。 3. 如果需要安装其他版本的OpenCV,可以通过手动编译和安装来实现。首先,下载OpenCV的源代码,可以从OpenCV官方网站的Releases页面下载\[3\]。然后解压源代码,并进入解压后的目录。 4. 创建一个build目录,并进入该目录。然后使用cmake命令来配置编译选项,指定安装路径等。例如,可以使用以下命令进行配置: ``` cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_GENERATE_PKGCONFIG=ON .. ``` 这个命令将会生成一个opencv.pc文件,可以使用`sudo updatedb`和`locate opencv.pc`命令来查找该文件的位置\[3\]。 5. 配置完成后,使用make命令进行编译。可以使用`make -j`命令来加速编译过程。 6. 编译完成后,使用sudo make install命令来安装OpenCV。 7. 最后,根据需要,可以设置一些环境变量。例如,可以在.bashrc文件中添加以下语句: ``` export PKG_CONFIG_PATH=/usr/local/opencv343/lib/pkgconfig export LD_LIBRARY_PATH=/usr/local/opencv343/lib export OpenCV_DIR=/usr/local/opencv343 ``` 这些环境变量可以帮助系统找到安装的OpenCV库\[2\]。 请注意,以上步骤仅供参考,具体操作可能会因系统版本和安装方式的不同而有所差异。建议在进行操作之前,先查阅相关文档和教程,以确保正确安装和配置ROSOpenCV。 #### 引用[.reference_title] - *1* *3* [Ubuntu安装后续|ROS配置|opencv|qt|vscode](https://blog.csdn.net/lizhijian111/article/details/127528301)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [ubuntu18.04 opencv3.4.3 安装](https://blog.csdn.net/weixin_43112462/article/details/128067135)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值