一、部署opencv
(1)、下载opencv
官网地址
Releases - OpenCVhttps://opencv.org/releases/下载完成后,根据下载提示进行
(2)、配置环境
配置path路径
二、部署boost
(1)、下载boost
官网下载地址
Boost C++ Librarieshttps://www.boost.org/文件结构如图
(2)、编译boot库
运行该脚本会生成b2.exe应用程序,再通过cmd形式控制b2.exe生成lib、dll
在boost路径下cmd
输入命令
b2.exe --toolset=msvc-14.2 architecture=x86 address-model=64 link=static --build-type=complete --with-system --with-thread --with-date_time --with-filesystem --with-serialization
命令解析
-
--toolset=msvc-14.2
- 作用:指定编译器工具链。
msvc-14.2
对应Visual Studio 2019(MSVC版本号14.2) - 常见值:
-
gcc
/clang
: 跨平台编译时使用 -
msvc-14.1
: VS 2017 -
msvc-14.3
: VS 2022
-
- 作用:指定编译器工具链。
-
architecture=x86
-
作用:指定目标CPU架构为32位x86指令集,生成兼容32位系统的二进制文件。
-
注意:与
address-model=64
组合时可能冲突(见下文)
-
-
address-model=64
- 作用:指定生成64位地址模型的二进制文件(即64位程序)。
- 常见值:
32
: 32位程序64
: 64位程序
- 冲突说明:若同时设置
architecture=x86
和address-model=64
,实际以address-model
为准,生成64位代码
-
link=static
- 作用:生成静态链接库(
.lib
文件),编译后的程序运行时无需依赖Boost动态库。 - 对比:
link=shared
: 生成动态链接库(.dll
+.lib
),减少最终程序体积,但需分发动态库
- 作用:生成静态链接库(
-
--build-type=complete
-
作用:编译所有可能的库变体,包含:
-
Debug/Release版本
-
静态/动态链接(需结合
link
参数) -
多线程/单线程(默认多线程)
-
-
替代选项:
--build-type=minimal
仅生成必要库
-
-
with-<库名>
- 作用:指定需要编译的Boost库。例如:
with-system
: 编译Boost.System
with-thread
: 编译Boost.Thread
with-filesystem
: 编译Boost.Filesystem
- 默认行为:不指定时编译所有库,但部分库可能依赖外部组件(如Python)
- 作用:指定需要编译的Boost库。例如:
三、下载CMake工具
(1)、下载CMake
官网地址
Download CMakehttps://cmake.org/download/
如果有下载过Qt Creator IDE的可以直接在里面找,根目录下找到Tools->CMake_64->bin
四、部署第三方库
(1)、编译DBoW2
在ORB-SLAM3forWindows-master文件夹下找到Thirdparty中的DBoW2
修改DBoW2中CMakeLists.txt文件
新建build文件夹
使用CMake工具编译,生成sln解决方案
打开sln解决方案生成库文件
VC++目录->包含目录
C/C++->代码生成
配置完成后右键->DBoW2项目->生成即可
(2)、编译g2o
在ORB-SLAM3forWindows-master文件夹下找到Thirdparty中的g2o
新建build文件夹,这里的CMakeLists.txt不需要更改
同上,使用CMake工具生成sln解决方案即可,打开sln
C/C++->常规->附加包含目录
C/C++->预处理器->预处理器定义
右键->g2o项目->生成即可
(3)、编译Pangolin
在ORB-SLAM3forWindows-master文件夹下找到Thirdparty中的Pangolin
新建build文件夹,这里的CMakeLists.txt也不需要更改
同上,使用CMake工具生成sln解决方案即可,打开sln
VC++目录->包含目录
VC++目录->库目录
C/C++->常规->附加包含目录
可以指定编译器宏,C/C++—>预处理器—>预处理器定义
COMPILEDWITHC11;
五、编译ORB_SLAM3
(1)、下载ORB_SLAM3
官网下载地址
https://github.com/UZ-SLAMLab/ORB_SLAM3https://github.com/UZ-SLAMLab/ORB_SLAM3
(2)、编译ORB_SLAM3
新建build文件夹
设置CMakeLists.txt
设置完毕后通过CMake工具生成sln解决方案,生成方式同上,然后打开解决方案
VC++目录->包含目录
VC++目录->库目录
C/C++->预处理器->预处理器定义
确保运行为多线程
右键ORB_SLAM3项目->生成,出现opencv找不到错误提示,无法打开包括文件: “opencv/cv.h”: No such file or directory,可修改此处
从opencv的目录结构也可看的出来
生成ORB_SLAM3,提示"CV_RGB2GRAY": 未声明的标识符,进入Traking.cc
文件,添加以下头文件
生成ORB_SLAM3,提示“CvMat”: 未声明的标识符,进入PnPsolver.cc
文件
打开头文件PnPsolver.h,引入以下头文件
再次编译生成ORB_SLAM3,提示"CV_GRAY2BGR": 未声明的标识符 ,再次添加以下头文件
再次编译生成ORB_SLAM3,提示"CV_REDUCE_SUM": 未声明的标识符,添加以下头文件
此时就能生成成功了
六、编译mono_tum
(1)、配置环境
右键mono_tum项目->属性,VC++目录->包含目录
VC++目录->库目录
C\C++->常规->附加包含目录
C/C++
–>预处理器
–>预处理器定义
确保运行库为多线程
链接器->输入->附加依赖项
配置完成编译生成就可以通过了
(2)、测试数据
下载地址
https://vision.in.tum.de/rgbd/dataset/freiburg1/rgbd_dataset_freiburg1_desk.tgzhttps://vision.in.tum.de/rgbd/dataset/freiburg1/rgbd_dataset_freiburg1_desk.tgz将rgbd_dataset_freiburg1_desk解压至ORB-SLAM3forWindows-master\Examples\data,data需要自行新建
将所有opencv生成的dll文件、mono_tum应用程序,都放入ORB-SLAM3forWindows-master\Examples\Monocular\Release
修改ORB-SLAM3forWindows-master\
Examples\
Monocular路径下的TUM1.yaml
文件,添加如下代码
进入ORB-SLAM3forWindows-master\
Vocabulary,解压ORBvoc.txt.tar,得到ORBvoc.txt
在ORB-SLAM3forWindows-master\Examples\Monocular\Release
输入命令
mono_tum 盘符:\ORB-SLAM3forWindows-master\Vocabulary\ORBvoc.txt 盘符:\ORB-SLAM3forWindows-master\Examples\Monocular\TUM1.yaml 盘符:\ORB-SLAM3forWindows-master\Examples\data\rgbd_dataset_freiburg1_desk
如上述操作未能出现界面,以下提供文章供大家参考
opencv参考文章