Ubuntu16.04上安装 opencv3.1详细教程

本文详细介绍了如何从源码编译安装 OpenCV 3.1.0 版本的过程,包括下载源码、创建编译文件夹、配置安装路径、编译过程及解决常见错误的方法。

1、进入官网 : http://opencv.org/releases.html , 选择 3.1.0 版本的 source , 下载 opencv-3.1.0.zip ,如下图所示。可能会非常慢,这里我提供我的网盘地址供大家选择,链接:https://pan.baidu.com/s/19KqQlxavFo5jURGOwJrBZg 密码:6ja2


2、下载之后将文件拷贝到home文件夹下,并将其解压。

unzip opencv-3.1.0.zip

3、命令行进入已解压的文件夹 opencv-3.1.0 目录下,并执行下列命令。

cd ~/opencv
#安装前准备,创建编译文件夹:
mkdir build # 创建编译的文件目录
cd build
#配置:
sudo apt install cmake
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
#编译:
sudo make -j8  #-j8表示并行计算,根据自己电脑的配置进行设置,配置比较低的电脑可以将数字改小或不使用,直接输make。

4、在执行 sudo make -j8 命令编译到 93% 时可能会出现以下错误:


这是因为opecv3.0与cuda8.0不兼容导致的。解决办法:修改 ~/opencv/modules/cudalegacy/src/graphcuts.cpp文件内容,如图所示。


其中, #if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)||(CUDART_VERSION>=8000) 是我们修改的。

以上只是将opencv编译成功,还没将opencv安装,需要运行下面指令进行安装:

sudo make install

5、安装完成后通过查看 opencv 版本验证是否安装成功:

pkg-config --modversion opencv 

<think>好的,我需要回答用户关于在Ubuntu 16.04安装gmapping是否会出现像rtabmap那样的版本兼容性问题。首先,我得了解gmapping和rtabmap各自的依赖情况。gmapping是ROS中的一个SLAM算法包,通常依赖于ROS的特定版本。而rtabmap可能涉及更多的外部依赖库,比如OpenCV、PCL等,这些库在Ubuntu 16.04上的默认版本可能较旧,容易导致兼容性问题。 Ubuntu 16.04已经EOL,软件源可能被归档,用户可能需要手动修改源或者使用PPA。ROS Kinetic是Ubuntu 16.04对应的版本,gmapping作为ROS包,可能更紧密地集成在ROS生态中,所以依赖冲突可能较少。而rtabmap可能需要更高版本的第三方库,比如OpenCV 3.x以上,但Ubuntu 16.04默认是OpenCV 2.4.9,需要手动编译升级,这容易导致问题。 接下来,我需要检查gmapping的官方文档或ROS Wiki,确认其对依赖库的具体要求。比如,gmapping是否依赖于特定版本的Boost、OpenCV或PCL。如果gmapping的依赖都在ROS Kinetic的软件源中提供,那么安装可能比较顺利。而rtabmap可能依赖更多非ROS的库,导致需要自行处理依赖。 另外,用户可能在安装过程中遇到的问题,比如编译错误、缺少库文件等。对于gmapping,如果ROS Kinetic的软件包维护良好,可能通过apt直接安装,而rtabmap可能需要源码编译,这时候会遇到更多版本冲突的问题。例如,如果rtabmap需要C++11或更高,而系统默认的GCC版本过低,就会导致编译失败。 还需要考虑用户是否自行安装了其他高版本的库,比如手动升级了OpenCV3.x或4.x,这可能导致与系统其他组件的冲突。而gmapping如果只使用ROS提供的库,可能不会涉及这些问题。但如果有外部依赖,同样可能有兼容性问题。 最后,总结gmapping在Ubuntu 16.04上的安装情况,是否容易遇到版本不兼容,给出解决方案,比如推荐使用Docker容器或升级系统,或者通过ROS的包管理来避免依赖问题。同时提醒用户如果必须使用旧系统,可能需要手动处理某些依赖或使用特定版本的源码。</think>### Gmapping与RTAB-Map在Ubuntu 16.04上的兼容性对比分析 #### 一、核心差异定位 $$ \text{Gmapping} \propto \text{ROS原生依赖} \quad \text{vs} \quad \text{RTAB-Map} \propto \text{多领域混合依赖} $$ - **Gmapping**:ROS Kinetic原生软件包,依赖链封闭 - **RTAB-Map**:跨ROS/OpenCV/PCL/Qt生态,依赖链开放 --- ### 二、兼容性风险对比表 | 评估维度 | Gmapping | RTAB-Map | |-----------------|---------------------------|----------------------------| | ROS依赖 | 仅需`ros-kinetic-slam-gmapping` | 需要`ros-kinetic-rtabmap*` + 外部组件 | | OpenCV版本 | 兼容2.4.9 (无需升级) | 要求≥3.0 (需手动编译) | | PCL库要求 | 使用1.7 (系统默认) | 需要≥1.8 (需源码构建) | | Qt依赖 | 无 | 需要≥5.9 (需PPA安装) | | 编译器要求 | GCC 5.4满足 | 可能要求≥GCC 7 (需工具链升级)| --- ### 三、Gmapping典型安装流程 ```bash # 通过ROS官方源安装(需确保ROS Kinetic环境完整) sudo apt-get install ros-kinetic-slam-gmapping ``` #### 依赖验证公式: $$ \text{成功条件} = \exists(\text{ros-kinetic-openslam-gmapping}) \cap \exists(\text{boost≥1.58}) $$ --- ### 四、RTAB-Map兼容性问题根源 1. **OpenCV版本冲突** $$ \text{系统OpenCV}_{2.4.9} \ngeq \text{需求OpenCV}_{3.1} $$ ```bash # 典型错误示例 fatal error: opencv2/xfeatures2d.hpp: No such file or directory ``` 2. **PCL点云库不匹配** $$ \text{系统PCL}_{1.7} \ngeq \text{需求PCL}_{1.8} $$ ```bash error: ‘pcl::TextureMesh’ has no member named ‘tex_material’ ``` --- ### 五、Gmapping避坑指南 #### 1. 依赖锁定方案 ```bash # 固定关键库版本 sudo apt-mark hold libopencv-dev libpcl-dev ``` #### 2. ROS工作区隔离 ```bash # 创建独立catkin空间 mkdir -p ~/gmapping_ws/src cd ~/gmapping_ws/ catkin_make isolate ``` #### 3. 版本验证脚本 ```bash # 检查核心依赖版本 dpkg -l | grep -E "ros-kinetic|libopencv|libpcl" | awk &#39;{print $2,$3}&#39; ``` --- ### 六、混合环境解决方案 #### 1. 使用Pbuilder构建隔离环境 ```bash # 创建16.04基础环境 sudo pbuilder create --distribution xenial ``` #### 2. 自定义Debian软件包 ```bash # 示例:降级OpenCV apt-get download libopencv-dev=2.4.9.1+dfsg-1.5ubuntu1 sudo dpkg -i libopencv-dev_2.4.9.1+dfsg-1.5ubuntu1_amd64.deb ``` --- ### 七、升级路径建议 $$ \text{推荐方案} = \begin{cases} \text{Ubuntu 18.04 + ROS Melodic} & \text{硬件条件允许} \\ \text{Docker容器化部署} & \text{必须保留16.04} \end{cases} $$ ```bash # Docker方案示例 docker run -it --network host osrf/ros:kinetic-desktop-full ``` --- **最终
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值