当前位置: 首页 > news >正文

【DLoopDetector(C++)】DBow2词袋模型loop close学习

0.前言

最近读了两篇论文,论文作者开源了一种基于词袋模型DBoW2库的DLoopDetector算法,自己运行demo测试一下
对应论文介绍:Bags of Binary Words for Fast Place Recognition in Image Sequences
开源项目Github地址:https://github.com/dorian3d/DLoopDetector

测试系统为Ubuntu18.04,OpenCV 3.2.0

1.编译项目

编译过程中还是遇到了一些小问题的,主要是在cmakelists.txt上

根据Github上的介绍,要提前安装依赖:

$ sudo apt-get install libboost-dev

将源码文件下载到本地根目录,我这里下载的是release版本中的v1.1-free,解压缩后只保留前面项目的名字即可

进入文件夹中找到CMakelists.txt,打开后发现从第32行开始可以看出,作者的意图是不需要提前安装DBoW2和DLib两个库,在build MakeFile文件时会自动安装编译,那这里就不需要提前安装了

第62行进入了一个if判断,说明要编译的是Demobrief.cpp

# 第62行add_executable(demo_brief demo/demo_brief.cpp)target_link_libraries(demo_brief ${OpenCV_LIBS} ${DLib_LIBS} ${DBoW2_LIBS})

所以回到第5行,将后面的OFF切换成ON

option(BUILD_DemoBRIEF  "Build demo application with BRIEF features" ON)

CMakelists.txt文件中大概就是这样子,保存后回到项目文件夹打开终端:

$ mkdir build
$ cd build/
$ cmake ..

结束后终端会弹出这两句,说明你之前电脑中确实没有安装过:

DLib library not found in the system, it will be downloaded on build
DBoW2 library not found in the system, it will be downloaded on build

如果你像我一样提前安装了,可以卸载掉,毕竟这两个库我平时不用
卸载方法:去usr/local/include 和 usr/local/lib 中找到相关文件rm -rf,还要去usr/local/lib/cmake下去删除config.cmake配置文件,否则find_package会得到一个空文件一直报错

得到MakeFile文件后进行make编译:

$ make

我遇见的问题是这样的:
在这里插入图片描述

通过查看爆红提示可以看到是编译cpp文件的时候找不到DBoW2.h这个头文件,我们先去项目中找一下DBoW2词袋库是否安装成功了,通过locate查找发现在这个路径下是有的:/DLoopDetector/build/dependencies/install/include/DBoW2

以防万一还是要看一下config.cmake中有没有问题

$ cd DLoopDetector/build/dependencies/install/lib/cmake/DBoW2
$ gedit DBoW2Config.cmake

查看一下找的路径,确实没问题,头文件和库文件都存在的
在这里插入图片描述

最后没找到什么好办法,于是我想到是不是顺序有问题,于是重新:

$ cmake ..
$ make

竟然成功了…,build文件夹下出现了demo_brief可执行程序

运行缺少resources数据,看到也有人遇到了这个问题:https://github.com/dorian3d/DLoopDetector/issues/14

下载链接:https://drive.google.com/uc?export=download&id=1MpZwPjXDAUxKfSTpeCjG0PAUpaeWuo7D

下载好后直接放到build下面,与demo_brief同一个位置,运行!

在这里插入图片描述

http://www.lryc.cn/news/185854.html

相关文章:

  • 什么是CAS机制?
  • Java多态详解
  • Android中简单实现Spinner的数据绑定
  • 【版本控制工具二】Git 和 Gitee 建立联系
  • 最新AI智能创作系统ChatGPT商业源码+详细图文搭建部署教程+AI绘画系统
  • 【算法与数据结构】--目录
  • 爱普生LQ1900KIIH复位方法
  • 字段位置顺序对值的影响
  • pytorch_神经网络构建2(数学原理)
  • Oracle SQL Developer 中查看表的数据和字段属性、录入数据
  • java docker图片叠加水印中文乱码
  • string类的使用方式的介绍
  • FFmpeg 命令:从入门到精通 | 命令行环境搭建
  • 《从零开始学ARM》勘误
  • 10款录屏软分析与选择使用,只看这篇文章就轻松搞定所有,高清4K无水印录屏,博主UP主轻松选择
  • android: android:onClick=“@{() -> listener.onItemClick(viewModel)}“
  • 温故知新:dfs模板-843. n-皇后问题
  • 刷题笔记28——一直分不清的Kruskal、Prim、Dijkstra算法
  • Mysql时间同步设置
  • 如何理解分布式锁?
  • windows 远程连接 ubuntu桌面xrdp
  • 数据采集时使用HTTP代理IP效率不高怎么办?
  • 你了解的SpringCloud核心组件有哪些?他们各有什么作用?
  • 【Gradle-10】不可忽视的构建分析
  • 2034. 股票价格波动
  • JavaScript 事件详解细节
  • 【MySQL】事务管理
  • Git 学习笔记 | Git 基本操作命令
  • 第五章:最新版零基础学习 PYTHON 教程—Python 字符串操作指南(第七节 - Python 中的字符串模板类)
  • 第八章 排序 十四、最佳归并树