自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 ceres 优化库使用要点记录

ceres 库安装使用,修改优化LBA过程

2023-07-21 17:51:09 285

原创 c++ 多线程

c++ 多线程的应用

2023-07-21 16:33:16 70

原创 c++ 多线程的应用

需要加入头文件#include <pthread.h>pthread_create (thread, attr, start_routine, arg) thread 指向线程标识符指针。 attr 一个不透明的属性对象,可以被用来设置线程属性。您可以指定线程属性对象,也可以使用默认值 NULL。 start_routine 线程运行函数起始地址,一...

2019-06-18 22:42:14 1538

原创 c++ pair类型

主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型。应用的头文件:<utility>对于pair类,可以直接访问其数据成员:其成员都是公有的,分别命名为first和second,只需要使用普通的点操作符1,访问 第一个数 temp.first第二个数 temp.second2,构成pair类型 make_pair(type,type);...

2019-05-22 14:50:54 779

转载 map 和 unordered_map的区别

c++中map与unordered_map的区别头文件map: #include < map >unordered_map: #include < unordered_map >内部实现机理map: map内部实现了一个红黑树,该结构具有自动排序的功能,因此map内部的所有元素都是有序的,红黑树的每一个节点都代表着map的一个元素,因此,对于map进行的查找,删除...

2019-05-22 14:28:46 320

原创 哈希表(hash table)

怎么理解哈希表呢?首先,我们来看看哈希表有什么特点,我们为什么要用它.hash table是一个高效的数据结构.它可以把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间.但是,需要的代价是会消耗比较多的内存.同时, 它还有编码容易的特点. 所以,一般在一些数据的查找时,我们可以应用哈希表进行处理.然后就是重点了,怎么理解呢?下面是简单的理解:首先是: 理解哈希表的原理,...

2019-05-21 18:51:54 201

原创 PCL学习--基础命令

定义点云变量:pcl::PointCloud&lt;pcl::PointXYZ&gt;::Ptr cloud(new pcl::PointCloud&lt;pcl::PointXYZ&gt;);--点云指针变量pcl::PointCloud&lt;pcl::PointXYZ&gt; cloud;--点云变量pcl::io::loadPCDFile&lt;pcl::PointXYZ&gt;("tes...

2018-04-13 15:45:38 2960

原创 螺旋队列问题

设1点的坐标为(0,0),x方向向右为正,y向下为正,如7的坐标是(-1,-1)。编程实现任意输入一个点的坐标(x,y)。输出所对应的数字。 首先对于每一层进行分析: 第0层:只有一个1 第1层:2到9; 第2层:10到25; 。。。每一层的最后一个数为1,9,25…..是平方数(2t-1)(2t-1)其中t表示层数。n层一共就(2t-1)(2t-1)个数。 每一层分为上下左右四个方向:

2017-11-01 21:34:24 243

原创 数组

/* 1,2,3,4,5 2,4,6,11,16 3,7,14,25,41 4,11,25,50,91 5,16,41,91,182f(m,n)=n(m==1)/m(n==1)/f(m-1,n)+f(m,n-1) (m>1,n>1) */int f10(int m, int n){ if (1 == m) return n; if (1 == n)

2017-11-01 20:33:32 158

原创 相同数组不同的顺序的匹配

//相同数组不同的顺序的匹配void match(int a[], int b[], int n){ int i, j; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { if (a[i] == b[j]) {

2017-11-01 20:31:42 307

原创 设定一个定时器,当输入一个时间就按照输入值停留多少

//设定一个定时器,当输入一个时间就按照输入值停留多少#include<windows.h>void time_stop(int n){ double cnt = 0; cnt = n * 1000;//毫秒 Sleep(cnt);}

2017-11-01 20:30:56 325

原创 括号序列的判断

#include<iostream>#include<vector>#include<string>//#include<_dbdao.h>using namespace std;int main(){ char*a=new char[50]; cin>>a; string b(a); int l=0; int num=0; for(int

2017-10-28 21:41:22 361

原创 c++中的拷贝构造函数和赋值函数

拷贝构造函数:是一种特殊的构造函数,函数的名称必须和类名称一致,它必须的一个参数是本类型的一个引用变量。 CExample(const CExample& C) ;class CExample { private: int a; public: //构造函数 CExample(int b) { a = b; cout<<"creat: "<<

2017-10-28 11:04:47 167

转载 求一个整数中的二进制一的个数

int func(x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; } 将x转化为2进制,看含有的1的个数。

2017-10-27 21:40:56 231

转载 请定义一个宏,比较两个数的a、b的大小,不能使用大于、小于、if语句

1,#define max(a,b) ((((long)((a)-(b)))&0x80000000)?(b):(a)) 若a>b,则a-b的二进制最高位为0,与上任何数还是0,所以大数为a; 否则,a-b为负数,最高位为1,与上0x80000000(最高位为1其他为0)之后为1,所以此时最大数为b。 2,#define max(a,b) ((((a)-(b))&(1<<31))?(b):(a)

2017-10-27 21:36:33 1232

转载 空类中的默认函数

1、缺省构造函数。 2、缺省拷贝构造函数。 3、 缺省析构函数。 4、缺省赋值运算符。 5、缺省取址运算符。 6、 缺省取址运算符 const。class A { public: A(){}//缺省构造函数 A(const A&){}//拷贝构造函数 ~A(){}//析构函数 A&operator=(const A&){}//赋值运算符

2017-10-27 21:30:40 435

转载 模板类的作用

程序设计中,会遇到这样的问题:程序实体所要完成的功能完全一样,但是它们所操作的数据类型却不一样。对于这些函数或者类,采用一个函数和一个类来进行描述的话,将会大大简化程序设计的工作。 一个程序实体的这种能对多种类型的数据进行操作或描述的特性为类属性,具有类属性的程序实体有类属模板和类属函数。采用模板类得好处: 1)可以用来创建动态增长和减小的数据结构 2)它是类型无关的,

2017-10-27 21:25:06 3780

原创 重载和覆盖的区别

重载:在一个作用域中,函数名相同,参数列表不同。 覆盖: 指的是基类中的虚函数和子类中的同名虚函数之间的的关系。 隐藏:(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。 (2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。

2017-10-27 21:22:58 174

原创 c++基础2

1,循环有序数组的二分查找 循环有序数组: 指的是,将一个有序数组循环左/右移动若干距离之后变成的数组。如,[1,2,3,4,5]循环右移3位,就成为[4,5,1,2,3]。该数组的特点是,其中包含着一个转折点。转折点左右两侧的子数组都是有序的,并且左侧的子数组整体都比右侧的子数组大。 查找方法: 不要想着直接定位到转折点。 只需要知道转折点在中间点的哪一侧就行。因为不含转折点的一侧一定是

2017-10-27 18:02:11 192

原创 c++相关基础

stl内存在哪:vector map set等标准容器默认都是使用内存分配器模板类allocator管理内存的分配、释放。allocator调用new/delete操作符进行批量的内存分配。所以在堆。 首先我们知道c++中主要的内存存储分配方式有: 栈,堆,全局/静态存储区,常量存储区,自由储存区 栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部

2017-10-27 17:49:20 183

原创 C++中的基础相关知识之内联函数inline,extern,条件编译

5,inline 修饰的是内联函数 inline 返回类型 函数名(){}; 关键字 inline 必须与函数定义体放在一起才能使函数成为内联,仅将 inline 放在函数声明前面不起任何作用。 在编译的时候可以直接镶嵌到目标代码中,虚函数不能是内联函数。6,extern extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中

2017-10-26 10:33:23 412

原创 C++中的基础相关知识之预处理,const,sizeof

2,预处理 宏定义 #define 宏指的是一个简单的替换,如 #define sub(x,y) x-y 和#define sub(x,y) (x-y); a*sub(c,d)针对于上面的宏是不同的结果。 在编译时没有进行类型安全检查。 3,常量 关键字 const a,定义的时候必须要初始化,并且常类型的变量或对象的值是不能被更新的。 b,将const改为外部连接,作用于扩大至全局,编

2017-10-25 10:36:54 201

原创 C++中的基础相关知识之static

1,静态变量static 分配在静态存储区。静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。 a,函数内部局部静态变量 • 该变量在全局数据区分配内存; • 静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化; • 静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0; • 它始终驻留在全局数据区,

2017-10-25 09:59:21 128

原创 C++中virtual相关的知识

virtual 关键字,在c++中的主要应用如下: 1,virtual修饰类中的成员函数,叫做虚函数; a,一般的虚函数: 主要体现是类继承的多态性(运行时动态绑定);如在基类A中定义一个虚函数 virtual void f(),那么在A的继承类B中可以对A中的虚函数进行重定义,得到不同的实现。 另一方面,定义一个基类的指针或者引用对象,然后应用子类的地址或者引用(对象)对它进行初始化,那么

2017-10-24 20:44:30 224

原创 c++中' '和“ ”的区别

"a"和'a'的区别,前者是字符串,后者是字符。实际上,"a"在内存中一般占2个字节(不是说字符串长度,是占用内存。注意说是一般占2字节,有特殊情况),"a\0",以'\0'结尾。而'a'是一个单字符。 当然字符串可以是"abcde"这样的,'abcde'这样就是错误的。单引号里的内容表示是字符,双引号里的内容表示是字符串,每个字符串都有一个'\0'结束符。在C++中sizeof('a')=1,它

2017-10-24 18:52:16 6946

原创 对极约束

主要涉及到本质矩阵E(Essential Matix),以及基础矩阵F(Fundamental Matix): E=t^R; F=K*F*K; 其中K为相机内参矩阵的的逆矩阵;t,R为两幅图之间的相对变换。 E有6个自由度,减去一个,只有5个自由度。所以求解E有五对匹配点的就可以。但是,为了求解的方便性,一般利用8对匹配点求解。

2017-10-20 21:45:42 326

原创 三角测量(triangulation)

主要是通过相机的运动来估计特征点的空间位置。设x1,x2分别为两个特征点的归一化坐标,s1,s2,为两个特征点的深度值,R,t表示两帧之间的变换。那么就有s1*x1=s2*R*x2+t;现在方程左右两边左乘x1^,求x1的外积,那么就有0=s2*x1^*R*x2+x1^*t;可以直接求出s1和s2的值。但是一般情况下R,t不一定精确,所以一般应用最小二乘求解,那么怎么求

2017-10-20 20:03:45 8011

转载 c++中引用和指针的异同

1.指针和引用的定义和性质区别:(1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。如:int a=1;int *p=&a;int a=1;int &b=a;上面定义了一个整形变量和一个指针变量p,该指针变量指向a的存储单元,即p的值是a存储单元的地址。而下面2句定义了一个整形变量a和这个整形a的引用

2017-10-19 23:11:15 282

原创 ORB-SLAM基础

ORB-SLAM简介研究生阶段主要是对于orb-slam进行了比较多的研究,现在回顾并且总结对于orb-slam的一下学习和研究的过程,希望对于新学者会有一些帮助。首先是一些orb-slam学习资料如下:官网,提供源代码:http://webdiis.unizar.es/~raulmur/orbslam/泡泡机器人(微信公众号:泡泡机器人SLAM)对于orb-slam的讲解,包括详

2017-06-02 09:48:04 442

原创 视觉orb_slam中LM算法的分析

orb_slam中LM算法的分析                                         刘康                                                                            2017年 1月在orb_slam的PoseOptimization()函数中的LM算法,可以分解成几个部分,首先是线

2017-01-02 21:43:04 1831

空空如也

空空如也

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

TA关注的人

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