最近在学习视觉SLAM十四讲,发现数学方面的内容比较好理解(机械学院自动控制工科出身),但涉及到实践部分与代码相关的内容就感觉有点啃不懂(没系统学习过编程),经常有些代码的细节看不懂,网上查到的内容大多也是一笔带过(估计我水平太低, 很多显而易见的内容都不懂),所以决定把自己的学习心得记录下来,一个是方便自己学习和整理知识,另一个也是方便其他像我一样的小白在搜索相关问题的时候能找到详细的解释。
代码和解释如下:
#include <iostream>
#include <fstream> //为了代码后面对文件的读写操作
#include <list> // list将数据存储在非连续内存空间中,由前驱和后驱指针将所有元素连接起来, 方便删除和插入元素。而vector对元素操作后,所有元素的存储地址都会有所影响。
#include <vector> // vector是c++支持的另一种容器类型
#include <chrono> // 与时间相关的库, 包括duration, time point等
using namespace std;
// 下面是需要用到的opencv相关的库
#include <opencv2/core/core.hpp> //核心模块,主要包含了opencv用到的数据结构,如point
#include <opencv2/highgui/highgui.hpp> // 图形用户界面,包含imread,imshow等
#include <opencv2/features2d/features2d.hpp> // 2d特征框