视觉SLAM十四讲——第二讲

本文介绍了CMake在构建和管理项目中的作用,详细讲解了如何使用CMake编译指令创建静态库和共享库,并探讨了头文件在库使用中的重要性。通过实例展示了CMakeLists.txt文件的配置,包括如何添加和链接库文件。
摘要由CSDN通过智能技术生成

视觉SLAM十四讲——第二讲文章目录


本文主要记录十四讲中涉及到并且自身不懂或者一知半解的内容。全文内容请看书


一、Cmeke

作用:用于管理源代码,编译源代码

1、编译指令

在当前目录下编译:

cmake .

注意:不要漏了“.”
执行cmake指令:处理了工程文件之间的关系
执行完毕后:将会产生一系列中间文件,因此最好在当前目录下新建一个build文件夹,在文件夹中进行编译

2、编译指令

在当前目录下编译:

make

执行make:实际上是调用了g++来编译程序

二、使用库

只有带main函数的文件在编译后会生成可执行文件,其他文件一般会打包成一个库。
如OpenCV、Eigen、Ceres库等。
同样,可以用cmake生成库

1.库文件(没有main函数的.cpp文件生成库文件)

静态库

静态库每次调用都会生成一个副本
在CMakeLists.txt文件中添加:

add_library(hello libHelloSLAM.cpp);

执行一中的编译指令后,静态库会产生后缀名是“,a”的文件
解释:将“libHelloSLAM.cpp”文件编译成一个叫做“hello”的静态库

共享库

同静态库相比,只有一个副本
在CMakeLists.txt文件中添加:

add_library(hello_shared SHARED libHelloSLAM.cpp);

执行一中的编译指令后,静态库会产生后缀名是“,so”的文件
解释:将“libHelloSLAM.cpp”文件编译成一个叫做“hello_shared”的共享库

2.头文件(.h)

只有库文件还不能使用这个库文件中的东西,还需要一个头文件,来说明这个库中有什么。

1、只要在有main函数的cpp文件中添加:

#include "。。。.h"

2、在CMakeLists.txt文件中添加

add_executable(useHello useHello.cpp)//将cpp文件编译成“useHello”文件
target_link_libraries(useHello hello_shared)//将1生成共享库链接到上面一行生成的“useHello”文件上

三、CMakeLists.txt文件中内容示例

# 声明要求的 cmake 最低版本
cmake_minimum_required(VERSION 2.8)

# 声明一个 cmake 工程
project(HelloSLAM)

# 设置编译模式
set(CMAKE_BUILD_TYPE "Debug")

# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
add_executable(helloSLAM helloSLAM.cpp)

# 添加hello库
add_library(hello libHelloSLAM.cpp)
# 共享库
add_library(hello_shared SHARED libHelloSLAM.cpp)

# 添加可执行程序调用hello库中函数
add_executable(useHello useHello.cpp)
# 将库文件链接到可执行程序上
target_link_libraries(useHello hello_shared)
视觉SLAM十四》的第七章主要介绍了ORB特征的手写实现。ORB特征是一种基于FAST角点检测和BRIEF描述子的特征提取方法,它在计算效率和鲁棒性上表现出色,被广泛应用于视觉SLAM中。 第七章还介绍了ORB特征的主要步骤,包括角点检测、特征描述子计算和特征匹配。在角点检测中,通过FAST算法检测图像中的角点位置。然后,利用BRIEF描述子计算对应角点位置的特征描述子。最后,通过特征匹配算法将当前帧的ORB特征与地图中的ORB特征进行匹配,从而实现相机的位姿估计和地图构建。 除了手写ORB特征的实现,第七章还介绍了ORB-SLAM系统的整体框架和关键技术。该系统结合了特征点法和直接法,实现了在无GPS和IMU信息的情况下进行实时的视觉SLAM。通过利用ORB特征进行初始化、追踪和建图,ORB-SLAM系统在室内和室外环境下都取得了良好的效果。 总而言之,视觉SLAM的第七章《视觉SLAM十四》介绍了手写ORB特征的实现方法,并介绍了ORB-SLAM系统的整体框架和关键技术。这些内容对于理解和应用视觉SLAM具有重要意义。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [视觉SLAM十四——ch7](https://blog.csdn.net/weixin_58021155/article/details/123496372)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [《视觉slam十四》学习笔记——ch7实践部分 比较opencv库下的ORB特征的提取和手写ORB的区别](https://blog.csdn.net/weixin_70026476/article/details/127415318)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值