自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (1)
  • 收藏
  • 关注

原创 std::map容器中的元素排序

如上述代码所示,当我们想比较map中元素进行排序的时候,并不需要考虑Element的具体类型,在写谓词函数的时候,只需要考虑key的类型即可。OK,这里不进一步讨论红黑树的实现,主要是想说一下,要对map中的元素进行排序,特别是当我们的值是自定义的时候,如何实现自定义的排序。map作为C++标准库提供的关联容器之一,内部使用的是红黑树(Red-Black Tree)作为其底层的数据结构的。假设键的类型是简单数据类型,比如int。

2023-08-18 18:24:37 629

原创 将fmt编译成动态库

将动态库编译的开关打开。具体方式就是在CMakelists.txt中开头的部分加入下列语句:# enable building shared Librariesset(BUILD_SHARED_LIBS ON)加入之后,在编译安装,就会发现,你的fmt既有动态库也有静态库了。...

2022-04-06 13:18:59 824

原创 【算法与数据结构】leetcode-55-跳跃游戏

本题是leetcode-55. 跳跃游戏关键词:动态规划、贪心算法描述给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例1:输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例2输入:nums = [3,2,1,0,4]输出:false解释:无论怎样,总会到达下标为 3 .

2021-07-27 23:17:23 256

原创 【算法和数据结构】单词翻译

描述​ 小李的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。​ 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。​ 假设内存中有M个单元,每单元能存放一个单词和译义。每当软件将一个新单词存入内存前,如果当前内存中已存入的单..

2021-07-26 16:02:59 391

原创 【算法和数据结构】仓库日志

题目描述​ 某仓库购入新的货物(每次购入的货物均不同)并将一部分老货物发出,这个过程会有软件对数据以日志形式保存,规则如下:​ 该日志记录了两类操作:第一类操作为入库操作,以及该次入库的货物数量;第二类操作为出库操作。这些记录都严格按时间顺序排列。入库和出库的规则为先进后出,即每次出库操作货物为当前在仓库里所有货物中最晚入库的货物。​ 为了便于分析,现在加入了第三类查询操作,每次查询时,输出当前仓库数量最多的货物的数量。输入输出样例输入130 10 220 4.

2021-07-25 21:38:10 258

原创 【算法和数据结构】斐波那契数列 II

分析:代码#include <iostream>using namespace std;// int main() { int num; cin >> num; if (num <= 2) { cout << 1 << endl; } else { int f1 = 1, f2 = 1; int res; for (int i...

2021-07-14 23:50:27 276 1

原创 硬核3-D视觉 - Image Formation 图像的形成

3.0 INTRO设计视觉算法,首先得选择一个好的模型。一个好的模型的标准是合适(suitable)。并非一定要物理上极度精确。必须合理的考虑抽象,以及复杂度。针对手头面对的问题,选择一个合理的模型是一门工程的艺术。3.1 图像表示图像是什么?数学上,将图像定义为一个映射:这个映射的定义域是一个二维的平面区域,取值是实数值。比如,一个图像的,并且,是一个数值在0-255的自然数之间的值。这样一张图像在计算机中的表示就是下表的内容:表3.1 一张图像映射的部分内..

2021-07-11 23:23:25 907

原创 【无人自主系统】自主系统自主性(持续更新内容中)

事实上,过去当我们考虑地面、空中、水下无人设备的时候,我们考虑的是一个个子系统的自动化。传统意义上,自动化的定义是“系统或者设备在没有或者很少人工的参与下,完成特定操作,达成预期目的”。广义的自动化涵盖执行逻辑操作的软件及其他应用过程。这也是当前发展状况下,冠以“无人”二字的多数设备所达成的现状,也就是部分工作的自动化进行。 自动化技术包括制导和导航技术、飞机的飞控系统的电传操纵技术、融合多种传感器信息的多传感器融合技术等等。这些都是自动化技术的范畴。 自...

2021-07-06 13:20:19 1428

原创 【无人自主系统】定位 - 导航定位方案简介

惯性导航系统(Inertial Navigation System)其核心测量元件就是IMU(Inertial Measurement Unit),惯性测量单元。卫星定位示意图。典型的导航系统架构示意图:

2021-07-05 13:32:13 401

原创 【论文】LIMO: Lidar-Monocular Visual Odometry

这篇文章第一作者是Johannes Graeter,发表在2018年的IROS会议上。论文方法的源代码见:GitHub - johannes-graeter/limo: Lidar-Monocular Visual Odometry。1. 简介论文介绍了一种较为新颖视觉里程计,将激光雷达和视觉结合了起来。通过LIDAR提取深度,通过视觉提取特征进行跟踪,基于关键帧BA预测机器人运动。论文介绍的方法在KITTI数据集上取得了top 15的成绩,图1为本论文方法和其他方法的对比。图1 轨

2021-06-30 12:38:55 1142

原创 硬核3-D视觉 - 三维空间的刚体运动

我将不会定义时间、空间、地点和运动,因为它们对于所有来说都是显然既定的。—— 艾萨克 · 牛顿欧几里得运动,也叫做“刚体运动”,以及透视投影,是处于研究3D场景和它的2D图像之间几何关联的核心的两组基本变换。刚体运动对相机如何运动进行建模,透视投影则描述相机的成像原理。很早以前,刚体运动和透视投影是分开分别独立进行研究的。本章我们介绍三维欧氏空间以及其中的刚体运动。下一章将关注相机的投影模型。两章内容都需要一些线性代数的基础知识。一些线性代数的基础知识。2.1 三维欧氏空间.

2021-06-27 14:08:20 2052 2

原创 硬核3-D视觉 - 三维视觉简介

人类渴望知识。我们可以从人类对于感知喜爱看出这一点来。即使感知有时候并不一定有什么直接功利的效用,我们还是发自内心的喜欢它们 —— 特别是我们的视觉。对于人来说,能看见比什么都重要,除了视觉能让我们行动这一点之外,即使我们坐在那动也不动,我们也需要看见。为什么视觉相比其他感知能力如此重要?因为视觉告诉我们关于物体的知识以及如何区分它们的不同。— 亚里士多德1.1 由2D图像到3D模型对于灵长类动物而言,视觉非常重要。为什么让计算机“看见”是一件困难的事情?首先,让计算机看见并不简简单.

2021-06-26 21:56:05 1110 1

原创 【算法和数据结构】二叉树遍历(递归和非递归)

二叉树的前中后序列遍历,递归调用自身的方式写出来的代码非常简洁,一目了然。二叉树这种结构,个人认为天然的就是递归思想的载体。数学中的分形理论,有着类似的魅力。递归思想很多大牛都有自己的解释,不再去做过多的解读,简单说起来,就是对于一个复杂的问题,将其分解成若干个简单的问题,对这若干个简单问题,规定相同的方法加以解决,并对问题的最终解决条件加以确立,避免无限的递归调用。递归和循环的不同...

2020-03-20 23:28:48 306

原创 虚析构函数的作用——C++多态性

我们在应用C++的多态特性时,常常会碰到一种情况,就是当指向基类的指针被释放时,派生类的析构函数其实没有被调用,导致在派生类中申请的空间没有被释放,导致内存泄漏。如下:#include <iostream>// #include <stdlib.h>using namespace std;class Mammal {public: Mammal(...

2019-11-26 21:54:03 247

原创 添加Sophus库时CMake找不到Sophus的问题

很多人一开始使用Sophus库时会碰到下面的错误:CMake Error at CMakeLists.txt:5 (find_package): By not providing "FindSophus.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration fi...

2019-08-01 22:33:13 4913

原创 单应矩阵完成图像对齐

本示例,利用了回调函数调用鼠标点击的结果,同时演示了findHomography函数和warpPerspective函数的使用。#include <opencv2/opencv.hpp>#include <iostream>using namespace std;struct userData{ cv::Mat im; vector<...

2019-05-10 10:59:44 1351

原创 相机模型和标定 —— 图像去畸变

本示例是关于图像去畸变的,采用的是针孔相机模型。部分原理解释:本示例中,定义了原图image,也就是畸变之后的图像。定义了空图像image_undistorted,也就是去畸变之后的图像,我们的目标就是往这个图像里面的每个像素点上赋值,注意,像素坐标u和v都是整数,没有浮点数。怎么获取这个值呢?这个时候我们已经有了畸变之后的图像,如果能够建立去畸变之后的图像的像素坐标和畸变图像的...

2019-05-07 10:29:18 1845

原创 Eigen欧拉变换演示

本程序演示如何进行欧拉变换过程中,T矩阵的构建。#include <iostream>#include <Eigen/Core>#include <Eigen/Geometry>using namespace std;int main(){ Eigen::AngleAxisd rotation_vector(M_PI/4, Eige...

2019-05-06 22:19:01 1347

原创 Eigen旋转矩阵,旋转向量,欧拉角,四元数互相转换的示例

转载注明出处。直接放代码/* * 本程序演示旋转向量,欧拉角,旋转矩阵,四元数之间的相互转换 * Created By OuyangZizhou on 2019.5.7 */#include <iostream>#include <Eigen/Core>#include <Eigen/Geometry>using namespace ...

2019-05-06 21:48:04 4381

原创 为什么使用齐次坐标?

结论:齐次坐标在仿射变换中的使用非常方便。“齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”——F.S. Hill, JR。在三维情形下:我们写出(1,3,6),谁知道这代表一个点还是三维空间的一个向量呢?解决这个问题的方法,就是在三维基础上再加一个维度。对于点,加上1,也就变成了(1,3,6,1);对...

2019-05-06 20:55:43 1864 3

原创 EIgen四元数归一化

记录以下踩的坑。在对四元数操作的时候,没有进行归一化,所以导致R矩阵非正交的结果。本来旋转矩阵是正交的,但是如果没有对四元数归一化,生成的旋转矩阵就无法满足正交性。也就是说。贴上代码:#include <Eigen/Core>#include <iostream>#include <Eigen/Geometry>using namesp...

2019-05-06 16:28:06 10464

原创 相机成像过程

为啥有这么一个归一化平面呢??今天抽空,来把自己很久很久很久以前的理解记录一下。原理其实也没啥,大家应该都是知道的,从相机成像过程讲起。1、相机成像就是将相机坐标系下的空间点,投影到相机的像素点,整个过程可以用下面的投影过程描述。用方程的形式表示就是,其中f为焦距,Xc、Yc、Zc是点在相机坐标系下的坐标,单位是mm,u, v为像素坐标,fx为u轴方向上的系数,fy为v轴方...

2019-04-29 14:09:49 3046 2

原创 【opencv3】从CvMat* 到 cv::Mat类型的转换

今天编译一个工程,过程中出现错误,提示不可以用以下方式直接转换,贴上错误代码:CvMat* tempMask = cvCreateMat(1, npoints, CV_8U);cv::Mat(tempMask).setTo(true);在网上找了一圈,还是stackoverflow对我这个问题进行了解答。正确的转换方式如下:cv::cvarrToMat(tempMask).s...

2019-04-25 19:00:52 3876 1

原创 解决误修改/usr/lib文件夹所有者导致sudo无法使用的问题

我用的是联想T480,ubuntu16.04系统结合网上查找的方法我自己的解决过程如下:1、重启电脑,进入Advanced模式启动Ubuntu16.042、进入Recovery模式3、进入root模式4、改变挂载状态为可读,mount -o remount,rw /5、在该模式下改变lib文件家的onwechown -R root:root /usr/libc...

2019-04-11 10:17:56 1720

转载 Ubuntu16.04修改系统默认的Python版本 | ROS安装

【参考的博文】1.https://blog.csdn.net/fang_chuan/article/details/609583292.https://blog.csdn.net/weixin_37835458/article/details/79878785?utm_source=blogxgwz9因为要安装ros,rosdep init碰到问题,提示说没有rosdep2这个模块,报...

2018-12-26 17:51:48 2186

A invitation to 3D Vision

经典3D计算机视觉著作,专注于未来将会非常火热的3维视觉方向,3维视觉是未来计算机视觉的发展方向,认识我们的世界仅仅依赖2维视觉是不够的,还要进行3维的认知。

2019-08-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除