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

news2024/11/23 15:48:09

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.coloradmin.cn/o/1054346.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java 进阶篇】JDBC Connection详解:连接到数据库的关键

在Java中,要与数据库进行交互,需要使用Java数据库连接(JDBC)。JDBC允许您连接到不同类型的数据库,并执行SQL查询、插入、更新和删除操作。在JDBC中,连接数据库是一个重要的步骤,而Connection对象…

公众号商城小程序的作用是什么

公众号是微信平台重要的生态体系之一,它可以与其它体系连接实现多种效果,同时公众号内容创作者非常多,个人或企业商家等,会通过公众号分享信息或获得收益等,而当商家需要在微信做私域经营或想要转化粉丝、售卖产品时就…

springboot和vue:十、vue2和vue3的差异+组件间的传值

首先用vue-cli创建一个vue2的项目。 vue2和vue3的差异 main.js的语法有所差别。 vue2是 import Vue from vue import App from ./App.vuenew Vue({render: h > h(App), }).$mount(#app)vue3是 import { createApp } from vue import App from ./App.vuecreateApp(App).…

【OpenMV】形状识别 特征点检测 算法的组合使用

目录 形状识别 圆形检测 矩形识别 特征点检测 算法的组合使用 形状识别 圆形 霍夫圆检测算法 通过霍夫变换查找圆,支持openmv3以上 矩形 四元检测算法 识别任意大小任意角度的矩形,四元检测算法对图像的失真,畸变没有要求,畸…

spark SQL 任务参数调优1

1.背景 要了解spark参数调优,首先需要清楚一部分背景资料Spark SQL的执行原理,方便理解各种参数对任务的具体影响。 一条SQL语句生成执行引擎可识别的程序,解析(Parser)、优化(Optimizer)、执行…

Java性能调优必备知识学习路线

性能调优是Java开发中一个非常重要的环节,它可以帮助我们提高系统的性能、稳定性、可靠性和用户体验,从而提高用户体验和企业竞争力。 目录 一、为什么要学习Java性能调优? 二、如何做好性能调优? 2.1 扎实的计算机基础 2.2 …

Acwing 143. 最大异或对

Acwing 143. 最大异或对 题目描述思路讲解代码展示 题目描述 思路讲解 这道题的启示是&#xff1a;字典树不单单可以高效存储和查找字符串集合,还可以存储二进制数字 思路:将每个数以二进制方式存入字典树,找的时候从最高位去找有无该位的异. 代码展示 #include<iostream…

餐饮外卖配送小程序商城的作用是什么?

餐饮是支撑市场的主要行业之一&#xff0c;其市场规模很大&#xff0c;从业商家从大到小不计其数&#xff0c;对众商家来说&#xff0c;无论门店大小都希望不断生意增长&#xff0c;但在实际发展中却会面对不少痛点&#xff1b; 餐饮很适合线上经营&#xff0c;无论第三方外卖…

思维模型 周期

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。周期是一个看似极为简单&#xff0c;但背后却蕴藏着大智慧的模型&#xff0c;了解周期&#xff0c;对于了解王朝更替&#xff0c;数学之美&#xff0c;经济运转等都有帮助。 1 周期的应用 …

Swing程序设计(4)JLabel标签和导入图片

文章目录 前言一、JLabel标签 1.介绍2.实例展示二、JLabel中绘图和导入图片 1.自定义绘图2.导入图片总结 前言 本文介绍了Swing程序中JLabel标签的使用&#xff0c;以及在标签中导入图片和自定义图标的方法。 一、JLabel标签的使用 1.介绍 JLabel标签&#xff1a;在Swing程序中…

模拟实现map/set[改编红黑树实现map/set容器底层]

文章目录 1.搭建框架1.1map1.2set1.3RBTree1.4图解 2.代码剖析2.1RBTree.h2.2Map.h2.3Set.h2.4Test.cpp 1.搭建框架 1.1map 1.2set 1.3RBTree 1.4图解 2.代码剖析 2.1RBTree.h #pragma once #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <list&…

.net 温故知新:Asp.Net Core WebAPI 入门使用及介绍

在Asp.Net Core 上面由于现在前后端分离已经是趋势,所以asp.net core MVC用的没有那么多,主要以WebApi作为学习目标。 一、创建一个WebApi项目 我使用的是VS2022, .Net 7版本。 在创建界面有几项配置: 配置Https启用Docker使用控制器启用OpenAPI支持不使用顶级语句其中配置…

YOLOv5-PTQ量化部署

目录 前言一、PTQ量化浅析二、YOLOv5模型训练1. 项目的克隆和必要的环境依赖1.1 项目克隆1.2 项目代码结构整体介绍1.3 环境安装 2. 数据集和预训练权重的准备2.1 数据集2.2 预训练权重准备 3. 训练模型3.1 修改数据配置文件3.2 修改模型配置文件3.3 训练模型3.4 mAP测试 三、Y…

[NOIP2012 提高组] 国王游戏(贪心,排序,高精度)

[NOIP2012 提高组] 国王游戏 题目描述 恰逢 H 国国庆&#xff0c;国王邀请 n n n 位大臣来玩一个有奖游戏。首先&#xff0c;他让每个大臣在左、右手上面分别写下一个整数&#xff0c;国王自己也在左、右手上各写一个整数。然后&#xff0c;让这 n n n 位大臣排成一排&…

基于SpringBoot的大学生租房平台

基于SpringBoot的大学生租房平台的设计与实现&#xff0c;前后端分离 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色&#xff1a;用户、管理员、房东 管理员&#…

ck 计算留存

1.函数介绍 参数聚合函数 | ClickHouse Docs Retention​ 该函数将一组条件作为参数&#xff0c;类型为1到32个 UInt8 类型的参数&#xff0c;用来表示事件是否满足特定条件。 任何条件都可以指定为参数&#xff08;如 WHERE). 除了第一个以外&#xff0c;条件成对适用&…

第七章 查找 十、散列查找

一、哈希表&#xff08;散列表&#xff09; 哈希表的数据元素的关键字与其存储地址直接相关。 二、解决冲突的方法 三、散列表中元素的查找 总共对比了3个关键字&#xff0c;所以查找长度为3. 四、查找效率计算 &#xff08;1&#xff09;成功的概率 需要对比一次的关键字为…

保存锁屏壁纸 win11

经常在锁屏看见自己超级喜欢的壁纸&#xff0c;但是找不到在哪保存。这次把查到的方法总结在这里。 1.WinR调出运行框 2.输入以下内容后回车 C:\Users\你的用户名\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets3.得到的…

Fiddler抓取手机https包的步骤

做接口测试时&#xff0c;有时我们需要使用fiddler进行抓包分析&#xff0c;那么如何抓取https包。主要分为以下七步&#xff1a; 1.设置fiddler选项&#xff1a;Tools->Options,按如下图勾选 2.下载并安装Fiddler证书生成器 下载地址&#xff1a;http://www.telerik.com/…

Python脚本实现xss攻击

实验环境&#xff1a;zd靶场、vscode 知识点 requests.session() 首先我们需要先利用python requests模块进行登录&#xff0c;然后利用开启session记录&#xff0c;保持之后的操作处于同一会话当中 requests.session()用于创建一个会话(session)的实例对象。使用requests库…