《视觉十四讲》例程运行记录(5)——运行ch8视觉里程计2光流法和直接法的实践例程

news/2024/5/20 14:54:39

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、运行ch8的例程代码
    • 1. 编译例程代码前的修改
    • 2. 编译例程
    • 3. 编译报错
      • (1) 报错一:使用cmake .. 编译时出现
      • (2) 报错二:make编译时出现
      • (3) 报错三:make编译时出现


**

一、运行ch8的例程代码

1. 编译例程代码前的修改

修改optical_flow.cpp和direct_method.cpp文件中图片的路径
(1) 修改光流法图像的路径

string file 1 ="../LK1.png";        // 第一张图片路径
string file 2 ="../LK2.png";        // 第二张图片的路径

(2) 修改直接法图像的路径

string left file ="../left.png";
string disparity file ="../disparity.png";
boost::format fmt others("../%06d.png");       //   其他图片

(3) 修改CMakeLists.txt
每个target_link_libraries后面加上fmt,用于连接fmt库,如下:

在这里插入图片描述

2. 编译例程

(1) 在slambook2/ch8/目录下,创建build文件:

mkdir build
cd build

(2) 编译源码

cmake ..
make

注意:make编译时可能会出错,后面有解决的方法

(3) 运行例程

光流法的例程:

 ./optical_flow  

直接法的例程:

./direct_method

3. 编译报错

(1) 报错一:使用cmake … 编译时出现

报错信息如下:

Make Error at CMakeLists.txt:38(find package):By not providing
“FindG20.cmake” in CMAKE_MODULE_PATH this project has asked CMake to
find a package configuration file provided by “G2o”, but CMake did not
find one. Could not find a package configuratton file provided by
“g20” with any of the following names: G2oConfig.cmakeg
g2o-config.cmake

在这里插入图片描述
解决:
找到findg2o.cmake文件的位置,一般在g2o安装包中的"cmake_modules"文件夹中,将整个文件夹复制到相应工程的下面,与build文件夹在同一目录,然后编译可以正常通过。

(2) 报错二:make编译时出现

报错信息如下:

在这里插入图片描述

原因:
可能opencv3.2.0版本太低导致

解决:
安装更高的版本,如:opencv4.5.2(如果是ubuntu20的自带高版本的opencv,不会出现此问题)

(3) 报错三:make编译时出现

error: ’ CV GRAY2BGR’ was not declared in this scope
cv::cvtcolor(img2,img2 show,CV GRAY2BGR);

在这里插入图片描述
原因:
这个实验由于代码使用的是opencv2,而cmkelists.txt文件中是opencv4(error: ‘CV_GRAY2BGR’ was not declared in this scope)这是opencv2的用法,现在opencv3和4是COLOR_GARY2BG

解决办法:
1) 在光流的代码optical_flow.cpp文件中:
需要将CV_GRAY2BGR,更新为COLOR_GRAY2BGR。

2) 在direct_method.cpp文件中
CV_GRAY2BGR 替换为 cv::COLOR_GRAY2BGR,

最后重新编译ch8的代码,终端输入如下代码,即看到运行结果:

./optical_flow  
./direct_method

http://www.mrgr.cn/p/38566386

相关文章

Rust | 实现 API 限速操作 Example

在这篇文章中,我们将讨论如何在 Rust 中实现 API 限速。当涉及到生产中的服务时,是为了确保不良行为者不会滥用 API——这就是 API 限速的作用所在。 我们将实现 “滑动窗口” 算法,通过动态周期来检查请求历史,并使用基本的内存 hashmap 来存储用户 IP 及其请求时间。我们…

synchronized关键字的底层原理

1synchronized关键字的底层原理 Monitor 举个例子: 1.线程1执行synchronized代码块,里面用到了lock(对象锁)。首先会让这个lock对象和monitor关联,判断monitor中的owner属性是否为null。如果为null直接获取对象锁。owner只能关联一个线程。 2…

【JUC】并发编程 Synchronized 锁升级原理

Synchronized如何实现同步/互斥的效果? monitorenter: 将锁对象对象头中Mark Word的前30bit替换成指向操作系统中与其关联的monitor对象,将锁记录位状态改为10 monitorexit: 将锁对象对象头中Mark Word进行重置,重新恢…

Tasks 和算子链

Flink中的每一个操作算子称为一个Task(任务),算子的每个具体实例则称为SubTask(子任务),SubTask是Flink中最小的处理单元,多个SubTask可能在不同的机器上执行。一个TaskManager进程包含一个或多个执行线程,用于执行SubTask。 TaskManager中的一个Task Slot对应一个执行…

MT3516W-ASEMI工业电源专用MT3516W

MT3516W-ASEMI工业电源专用MT3516W编辑:ll MT3516W-ASEMI工业电源专用MT3516W 型号:MT3516W 品牌:ASEMI 封装:MTW-5 最大重复峰值反向电压:1600V 最大正向平均整流电流(Vdss):35A 功率(Pd):大功率 芯片个数:5 引脚数量:5 类型:插件整流桥、整流方桥 正向浪涌电流:45…

IP SSL证书申请教程:实现HTTPS加密访问

随着网络安全意识的提高,HTTPS加密访问已经成为网站安全性的重要标准。通过安装SSL证书,网站可以实现数据的加密传输,有效保护用户隐私和数据安全。本文将详细介绍如何为IP地址申请SSL证书,并实现HTTPS加密访问。 一、准备工作 …

会充电的CANoe-赋能新能源汽车,高效完成即插即充(PnC)智能充电功能测试

ISO 15118-2标准中描述的PnC功能,可以实现插枪即充电,识别、计费信息、充电参数都通过高级别通信在EV和EVSE之间自动交换。简化了电动汽车的充电过程,提高了用户体验,为电动汽车行业带来了更智能、更便捷的充电解决方案。然而,电动汽车和充电站之间要实现自动通信和计费,…

数据结构(四)—— 堆和二叉树(上)

制作不易,三连支持一下呗!!! 文章目录 前言一、树的概念及结构二、二叉树的概念及结构总结 前言 这篇博客我们将进行更加复杂的一种数据结构的学习——树形结构。 一、树的概念及结构 树是一种非线性的数据结构,它是…

03 插入排序

03 插入排序1.插入排序的含义类似扑克牌,假设认为0-0位置有序,再把0-1的位置变有序,循环直到所有的有序。每次拿取右侧的数字,一个一个对比放到左侧来。2.示例代码 def insertion_sort(arr):if arr is None or len(arr) < 2:returnfor i in range(1, len(arr)):# 0 ~ i-…

物联网工程毕业后没有一技之长,转行网络安全可行吗?

我21年毕业&#xff0c;大学专业是物联网工程&#xff0c;我相信很多人在象牙塔里都很迷茫&#xff0c;到了大三大四才开始慢慢焦虑自己该从事什么工作培养一技之长&#xff0c;或者是跟随大部队考研继续逃避社会&#xff0c;我选择了后者。21年7月拿到毕业证以后因为没有一技之…

A Bug‘s Life (并查集)

//新生训练 #include <iostream> #include <algorithm> using namespace std; const int N 5000; int p[N], sz[N]; int n, m; int find(int x) {if (p[x] ! x)p[x] find(p[x]);return p[x]; } int main() {int T;scanf("%d", &T);for (int k 1; …

IR2104详解

摘要:从NMOS到半桥驱动 关键词:NMOS、半桥、死区、自举升压目录基础知识 NMOS原理 半桥控制原理 IR2104简介 示例电路 引脚定义 电路原理详解 自举升压 死区控制 总结 链接 引入:IR2104是我上手的第一个半桥栅极驱动芯片,使用两片IR2104就可以搭建一个全桥电路控制电机的正…

红米1s 刷入魔趣 (Mokee)ROM(Android 7.1)

目录 背景准备工具硬件&#xff08;自己准备&#xff09;软件&#xff08;我会在文末提供链接&#xff09; 刷机步骤1. 重启电脑2. 安装驱动3. 刷入TWRP4. 清空数据5. 刷入魔趣6. 开机 结尾下载链接 本文由Jzwalliser原创&#xff0c;发布在CSDN平台上&#xff0c;遵循CC 4.0 B…

电脑增加硬盘后DP线显示器没信号问题

最近遇到一个项目,电脑硬盘空间不够,客户需要增加一个4T机械硬盘。 可增加后显示器不亮了。 拔掉机械硬盘后又恢复正常。我到现场后测试确实是这样。更换机械硬盘的电源线和数据线也一样。 并且电脑实际上是启动了的,就是没有显示输出。实在是找不到原因,只能说换个高清线试…

Django中如何让页面之间建立关系

今天给大家讲解两种让页面建立联系的方式 一、重定向 二、表单提交 先看第一种方式&#xff0c;重定向 首先需要了解客户端发起请求的过程 1、客户端向服务端发起请求,比如请求地址是&#xff1a;http://127.0.0.1:8000/lili/submit/ 2、程序根据路由找到视图函数 3、执行视…

基于YOLO的车牌与车型识别系统

一、项目背景与意义 随着智能交通系统的快速发展&#xff0c;车辆识别技术在交通管理、安防监控、自动收费、停车管理等领域发挥着至关重要的作用。车牌识别和车型识别作为车辆识别技术的核心组成部分&#xff0c;能够有效提升交通运营效率&#xff0c;加强公共安全监控&#…

css mix-blend-mode 层叠样式属性各类效果

官方给出的定义是&#xff1a;mix-blend-mode css 属性描述了元素的内容应该与元素的直系父元素的内容和元素的背景如何混合。 通俗来讲&#xff0c;就是一张图片跟它的父级元素背景色的融合方式。 大致分为以下16种&#xff1a; mix-blend-mode: normal; mix-blend-mode: m…

数据结构--链表进阶面试题

在链表题目开始之前我们来复习一道数组元素的逆序问题&#xff1a; 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 提示&#xff1a; 1 < nums.length < 10^5-2^31 < nums[i] < 2^31 - 10 < k < 10^5 思…

Sarcasm detection论文解析 |使用 BERT 进行中间任务迁移学习的刺检测

论文地址 论文地址&#xff1a;https://www.mdpi.com/2227-7390/10/5/844#/ github&#xff1a;edosavini/TransferBertSarcasm (github.com) 论文首页 笔记框架 使用 BERT 进行中间任务迁移学习的讽刺检测 &#x1f4c5;出版年份:2022 &#x1f4d6;出版期刊:Mathematics &…

自定义表单元素组件内容变化触发ElForm重新校验

对于下图中“付费类型”怎么实现有很多种方式&#xff0c;我能想到的是以下两种&#xff1a; Element Plus的RadioButton自定义组件 1. RadioButton 它本质上就是一个单选组件&#xff0c;它跟Element Plus的RadioButton本质上没有区别&#xff0c;无非是外观上的差别。那么…