自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

青箬笠,绿蓑衣

The secret of getting ahead is to get started——Mark Twain

  • 博客(49)
  • 资源 (16)
  • 收藏
  • 关注

原创 指向const的指针和const指针

如何区分1、const的右边是指针类型,则指针是const,即const指针;const的右边是整型类型,则该类型是const,即指向const的指针;2、指向const的指针可以不用初始化,因为指向可以变更;const指针必须初始化,因为不能更改;指向const的指针指向const的指针,代表指针所指向的变量的值不能更改;有两种形式:可以不用初始化,因为指向可以变更;const int* p1;int const* p2;const指针const指针,代表指针的指向不能更改;指针作为

2021-04-11 12:22:28 3581 2

原创 Git学习笔记(二)

git rmgit rm命令干了两件事:rm [file] // 删除工作区的文件git add [file] // 把修改纳入暂存区此时可以直接git commit提交修改到本地仓库,如果直接使用rm删除文件,则还需git add提交到暂存区。回退git reset HEAD [file] // 拉取本地仓库文件到暂存区,git checkout -- [file] // 拉取暂存区文件到工作区,覆盖即丢弃工作区的修改(如删除操作)git mvgit mv是移动命令,也可用于重命名

2020-10-25 22:00:14 188

原创 Git学习笔记(一)

Git配置设置Git的配置主要涉及user.name和user.email,分为三种情况:面向操作系统、面向用户、面向项目,三者的优先级依次递增。面向操作系统(几乎不用)用途:针对当前电脑设置统一的user.name和user.email配置文件的位置:/etc/.gitconfig// 命令行:git config --system user.name/user.email面向用户(常用)用途:针对电脑的当前用户设置统一的user.name和user.email配置文件的位置:~/.g

2020-10-24 09:55:53 189

原创 pcl::compute3DCentroid()计算质心算法原理

质心公式质量为1,M=nPCL函数#include <Eigen/Core>using namespace Eigen; Eigen::Vector4f centroid; //质心 pcl::compute3DCentroid(*cloud_smoothed,centroid); //估计质心的坐标代码...

2019-10-24 11:23:42 9408

原创 UDP检验和计算方法

UDP用户数据报格式UDP用户数据报首部格式如下图所示,包括三个部分:UDP伪首部,12字节,伪首部并不是UDP数据报的真正首部,只是为了计算检验和临时添加在UDP数据报的前面,它既不向下传送也不向上递交,它的仅仅是为了计算检验和而存在的。UDP首部,8字节、UDP数据等三部分组成,计算方法在计算前,需要进行以下处理:伪首部中第4字段指的是IP首部中的协议字段值,这里是UDP...

2019-10-07 11:50:49 10262 2

原创 SLAM常见面试题集锦

前言在备战秋招时,发现SLAM相关的知识点比较庞杂零碎,网上对于常见的面试题也没有全面的集锦可以参考复习,所以参考我找到的一些面试题,自发整理了一些常见的问题及参考答案。参考答案是博主参考大佬的回答及自己的理解给出的,用于自己秋招备战使用的,所以答案都力求准确、简洁。但奈何能力有限,答案仍可能存在错误或者瑕疵,欢迎留言批评指正。当然这里整理的也不全面,只是略尽绵薄之力,希望对大家有所帮助。另外...

2019-09-30 09:46:19 5374 1

原创 SLAM常见面试题

单目单目SLAM流程单目SLAM流程是:初始化–PnP–PnP……。具体方法是依赖对极几何的相关知识,根据2D-2D匹配点对计算本质矩阵(或基本矩阵),并对其进行分解得到相机运动,再依据三角化原理计算特征点距离。至此即得到3D-2D匹配点对,后续的相机位姿的估计就是PnP问题了。初始化初始化的意义是求取两个图像间的运动和特征点距离,初始化之后的运动都以初始化时的平移作为单位1,这称...

2019-09-30 08:41:51 1862

原创 char/string与int转换&&getline()用法

记录C++学习笔记,为秋招笔试做准备。数字与字符、字符串转换int ↔ char// int ---> charint i_a = 8;std::string s_a = i_a + '0'; // '0':ASCII码为48// char ---> intstd::string s_b = '9';int i_b = '9' - '0';int/float...

2019-09-30 08:35:12 540

原创 sizeof与字节对齐用法

sizeof + 字节对齐由于笔试中选择、填空题目经常会考到字节对齐问题,涉及sizeof及字节对齐的相关知识,这里记录一下。字节对齐相关知识,参考:C语言字节对齐问题详解实例一般情况:struct A{ int a; char b; short c;};struct B{ char b; int a; short...

2019-09-30 08:21:42 871

原创 《视觉SLAM十四讲》ch13.3:三角化公式推导及代码详解

前言《视觉SLAM十四讲–ch13.3》单目稠密重建代码中的三角化过程,不像第7章直接调用OpenCV中的triangulation()函数求解,而是自己根据公式计算、并使用克莱姆法则对方程组进行求解,得出深度信息。但代码中对有关公式的推导及与公式的对应关系讲解的不甚清楚,这里对该三角化过程进行公式推导,并与实现代码对应起来,方便大家理解。公式推导当通过极线搜索和块匹配确定参考帧与当前帧的...

2019-08-13 14:08:11 2849 2

原创 leetcode刷题之光标快速移动

引言使用leetcode刷题时,在需要输入行尾分号时,总免不了用到end键或–>键将光标移动到行尾,但是两者距离字母输入区较远,来回切换使用时,需要手、眼、屏幕信息三者配合协调一致,大大降低了敲代码的流畅性和舒适感,因此找了找有没有什么方法,可以解决这个问题,以提高工作效率、增加幸福感。于是,就有了这篇博文。方法在leetcode界面选择任意一道题目,进入后会解题界面的右半部分如下图...

2019-08-09 10:00:47 1863

原创 PCA(主成分分析)获取BoundingBox&代码分析

参考参考C++_Eigen函数库用法笔记——Block OperationsMoment of inertia and eccentricity based descriptorsFind minimum oriented bounding box of point cloud (C++ AND PCL)

2019-07-25 21:12:13 3669 6

原创 VIO标定IMU随机误差:Allan方差法

在IMU采集数据时,会产生两种误差:确定性误差和随机性误差,为获得精确的数据,需要对上述两种误差进行标定。标定方法确定性误差和随机误差的成因和标定方法各不相同。确定性误差确定性误差主要包括bias(偏置)、scale(尺度)、misalignment(坐标轴互相不垂直)等多种。随机误差随机误差主要包括:高斯白噪声、bias随机游走;IMU标定常用的Allan方差工具,主要有以下...

2019-07-16 16:59:15 9479 11

原创 ORB-SLAM2:(三)仿真实现&kinect2在线定位建图

基于ORB-SLAM2跑仿真环境

2019-06-21 14:41:40 4564 2

原创 ORB-SLAM2:(二)Monocular/Stereo/RGB-D数据集

环境:ubuntu16.04 + kinetic + kinect2IDE:CLion_2019.1.3环境配置ROS安装参考:ROS 不能再详细的安装教程–小萌是个球kinect2驱动安装参考:Ubuntu16.04安装KinectV2驱动Pangolin安装参考:ubuntu16.04+Pangolin安装其他参考:SLAM环境配置:Ubuntu16.04+Clion+E...

2019-06-21 14:11:51 2250 1

原创 ORB-SLAM2:(一)环境配置&源码编译

环境:ubuntu16.04 + kinetic + kinect2IDE:CLion_2019.1.3环境配置ROS安装参考:ROS 不能再详细的安装教程–小萌是个球kinect2驱动安装参考:Ubuntu16.04安装KinectV2驱动Pangolin安装参考:ubuntu16.04+Pangolin安装其他参考:SLAM环境配置:Ubuntu16.04+Clion+E...

2019-06-21 13:49:40 1086

原创 SLAM环境配置:Ubuntu16.04+Clion+Eigen+Ceres+g2o+Sophus+PCL+OpenCV+测试代码

考虑到linux系统可能会出现很多bug,导致需要反复重装系统,所以这里对自己配置SLAM环境的相关细节进行记录,权当做个笔记。linux使用Ubuntu16.04,安装要点如下:制作启动盘软件:deepin-boot-maker 1.1IDE:Clion...

2019-06-12 12:37:18 3558 3

原创 SICK激光传感器:LMS400生成表面点云

使用SICK激光传感器LMS400扫描物体表面,并生成表面点云。代码环境:Win10+VS2015+PCL1.8// LMS400连续扫描#include<iostream>#include<stdio.h>#include<fstream>//pcl#include <pcl/point_types.h>#include &lt...

2019-05-27 09:44:12 2278

原创 3D-2D三维重建:PnP

简介PnP(Perspective-n-Point)描述了当我们已知n个世界坐标系下的3D空间点以及它们的像素坐标系下的坐标时,如何估计相机位姿的方法。通常最少需要4对3D-2D点对(其中之一用于验证结果),就可以解出PnP问题。尤其是在双目或RGB-D的视觉里程计中,点的空间坐标可以由sK−1xsK^{-1}xsK−1x直接求出,sss为像素点的深度值,即可直接使用PnP估计相机运动。PnP...

2019-05-17 01:02:36 3024

原创 三角化公式推导&手撕代码

前言三角量测是在已知相机参数和图像中匹配点的情况下,求解这些匹配点对应的空间点三维坐标的方法;这里主要讲解直接线性变换法和RANSAC(随机采样一致性)法;推导设空间点PPP在世界坐标系下的坐标为XXX,点PPP到相机中心点的垂直距离为ddd,在像素坐标系下的坐标为xxx,世界坐标系与相机坐标系之间的相对旋转矩阵为RRR(3∗33*33∗3的旋转矩阵)、相对位移向量为TTT(3∗13*13...

2019-05-07 21:07:34 2834 5

原创 Bumblebee相机:标定、分离图像+保存成cv::Mat格式

整理资料发现未对Bumblebee的分离图像、保存成cv::Mat格式的使用方法留存笔记,这里补上,备忘。使用须知Bumblebee相机出厂时即被标定好,无需自己标定,使用官方提供的API即可获得标定好的左右视图;当然也可以获得raw图,自己进行标定。标定好的stereo pairs只是进行了相机标定,如果使用该图片计算深度图,还需进行立体校正,使相机满足极线约束。代码环境:...

2019-04-30 14:34:29 1140 11

原创 新松机器人:【示教编程】+【PC离线编程】+【PLC远程IO】相结合

1

2019-04-22 17:27:45 6493 6

原创 OpenCV使用rowRange/colRange断言错误:Assertion failed (!fixedSize() || ((Mat*)obj)->size.operator()()...

博主在使用rowRange()时遇到了如下断言错误,虽然定位到了错误是在rowRange,但是仍找了半天原因,最后突然醒悟问题出在rowRange的用法上:rowRange(a,b)取的是a&amp;lt;=row&amp;lt;b,即边界范围为:[a,b)。因为这个小问题浪费了不少时间,这里记录一下,希望给遇到同样问题的同学提供一个解决思路。错误提示:Error: Assertion failed (!f...

2019-03-15 13:55:13 7282

原创 SfM三维点云重建:BA优化--【VS2015+OpenCV3.4+PCL1.8】

概述在SfM多视图三维点云重建–【VS2015+OpenCV3.4+PCL1.8】中实现的增量式SfM三维点云重建,会随着图片数量的增加而导致误差逐渐累积,最后可能无法完成重建。在三维重建中常使用Bundle Adjustment(BA)优化来解决这个问题,BA优化是一种应用广泛的非线性优化方法,其本质属于非线性最小二乘问题,目的是找到使得重投影误差最小的3D点位置和相机参数。这里对BA原理就不...

2019-03-15 13:53:20 3386 1

原创 SfM多视图三维点云重建--【VS2015+OpenCV3.4+PCL1.8】

在完成两视图三维重建之后,接下来就是进行多视图重建。多视图重建的难点在于如何确定后一个相机到世界坐标系的变换矩阵。

2019-03-12 15:24:40 4308 6

原创 SfM两视图三维点云重建--【VS2015+OpenCV3.4+PCL1.8】

三维重建分为基于

2019-03-11 09:38:11 2783 1

原创 PCL可视化点云颜色特征

为了更加直观的显示点云、使点云在视窗中比较容易区分,这里介绍几种PCLVisualizer可视化类的使用方法。显示点云颜色特征该方法(PointCloudColorHandlerRGBField)要求点云类型包含RGB三个颜色分量,即该方法是直接显示点云中各个点的RGB属性字段信息,而不是通过对点云着色显示不同颜色。代码#include &amp;amp;lt;iostream&amp;amp;gt;#includ...

2019-02-20 15:43:08 11461 3

原创 点云的网格化【Win10+VS2015】

本文为参考【计算机视觉life】公众号的系列文章:从零开始一起学习SLAM | 点云到网格的进化,实现的点云网格化过程。网格化流程下采样+统计滤波通过下采样减少点云数据容量、提高处理速度;使用统计分析技术,去除点云数据集中的噪声、离群点;滤波前后对比重采样,平滑处理通过重采样对物体表面进行平滑处理和漏洞修复点云平滑前后计算点云表面法线计算点云法线,并将点...

2019-02-19 16:54:28 4814

原创 立体视觉入门资料整理

网上讲解双目立体视觉相关知识的资料虽然不少,但都比较零星或片面;而相对系统、详细的学习资料比较少见。博主整理了自己在学习过程中遇到的优秀的学习资源分享给大家,希望对你多少有些帮助。入门必读这里推荐博洛尼亚大学(University of Bologna)Stefano Mattoccia 教授的讲义《Stereo Vision: Algorithms and Applications》,是双目...

2019-02-14 19:49:35 1180

原创 由双目立体视差图重建三维点云【Win10+OpenCV3.4.1+PCL1.8】

双目立体视觉获取视差图和深度图的原理可参考:点云拼接:(视觉SLAM14讲+计算机视觉战队)

2019-02-01 22:46:21 20244 80

原创 相机分辨率、图片分辨率、像素及图片尺寸关系的思考

以前没有深入思考过这个问题,最近遇到了相关问题,这里记录一下我的思考及学习所得,供参考,欢迎批评指正。

2019-01-30 20:28:21 5309 1

原创 使用OpenCV对视差图/深度图(CV_16S/CV_32S)进行保存和显示

OpenCV默认的图像格式为CV_8UC3,此时图像为3通道、8位RGB图像,每个通道所能表达的灰度阶为28=2562^8=25628=256。而视差图常为CV_16S或CV_32S等,如果直接使用cv::imwrite()保存视差图或深度图,则图像将被转成CV_8U格式,损失很大的精度。保存在进行保存的时候,为保存无压缩图像,需要使用到cv::imwrite()的第三个参数。显示方法一...

2019-01-22 20:24:43 17814

原创 如何在笔记本上使用Bumblebee相机

以前分享过一篇博文:Bumblebee XB3相机使用经验,介绍了博主使用BBX3相机的一些经验,包括硬件连接、软件配置、Triclops SDK使用笔记等,主要是为了后来者少走些弯路。另外,看到有博友询问如何在笔记本上使用Bumblebee相机,为了提高检索成功率、帮助到更多的人,这里对【如何在笔记本上使用Bumblebee相机】这一问题,进行整理和总结。为什么必须是台式机?使用过Bumbl...

2019-01-20 16:26:42 1280 1

原创 OpenCV使用warpAffine实现图像旋转(防止切边)

原理使用warpAffine()进行图像旋转,是基于仿射变换的原理,通常2 ×\times× 3矩阵进行仿射变换:对于二维矩阵:X=[xy] X = \begin{bmatrix} x \\ y \\ \end{bmatrix} X=[xy​]进行如下变换:T=A⋅[xy]+B T =A\cdot\begin{bmatrix} x \\ y \\ \end{bmatrix} +BT=A⋅...

2019-01-18 16:21:00 8187 3

原创 PCL+VS2015实现点云可视化

PCL可视化资料多是基于Linux系统实现的,对于入门新手来说,如果想要在Windows系统中实现点云可视化,则免不了一番折腾。这里给出我在【Win10 x64+VS2015+PCL1.8.1】环境下实现的点云的可视化代码,并提供相关点云文件的下载链接,希望对新手有些许帮助。方式一代码// 使用CloudViewer类:提供的方法较少,只能进行简单的显示#include &lt;ios...

2019-01-10 19:33:40 2588

原创 Win10+VS2015+PCL1.8.1环境配置

PCL点云库的安装及详细的环境配置可参考如下链接:PCL1.8.1 VS2015 X64系统点云配置经验 ,这里做些补充及作笔记用。下载对应的版本:https://github.com/PointCloudLibrary/pcl/releases补充:安装时,可能会弹出OpenNI2.2SDK安装程序,选择C:\Program Files (x86)\PCL 1.8.1\3rdParty\O...

2019-01-08 19:06:14 1183

原创 双目视觉测距原理深度剖析:一个被忽略的小问题

这里不对双目视觉测距的原理进行过多讲解,而是针对双目测距公式,一个容易忽视的小问题,讲一下我的学习所得,欢迎大家批评指正。参考博客:对于双目测距原理不了解的,可以参考如下博客,讲解的都很详细:双目视觉测距原理,数学推导及三维重建资源双目相机–双目视差与深度距离关系推导详解以下内容也是由此引发:...

2018-12-21 17:03:22 5537 19

原创 VS中OpenCV的Debug/Release版本附加依赖项相互关联问题的解决方法

在VS中添加opencv的附加依赖项.lib,实现Debug版本和Release版本的切换,常用的方式有如下几种:方式一通过工程“项目属性”–&amp;amp;gt;“链接器”–&amp;amp;gt;“输入”–&amp;amp;gt;“附加依赖项”添加相关.lib文件,如下图:优点:缺点:...

2018-12-17 13:34:11 1923

原创 VS中【F5】与【Ctrl+F5】及【F7】与【Ctrl+F7】的区别

先附上【VS2015常用快捷键总结】的链接,善用快捷键将会极大的提升我们编程的效率和VS的使用体验。以前一直使用【F5】进行调试,所以每次执行程序的时候,都得在程序末尾手动添加system(“pause”)或者std::cin.get()。每次写程序都要添加一遍,总觉得太繁琐,于是就查了一下,这里进行总结,供大家参考。区别F5:调试,Ctrl+F5:执行。F5是我们在调试程序、寻找Bug...

2018-12-08 20:26:17 10481 1

原创 KLT光流法运动目标跟踪的OpenCV实现

最近在研究KLT光流法对运动目标的跟踪,这里贴出我根据《Learning OpenCV3》及《OpenCV3 CookBook》相关源码进行简化得出的对视频中运动物体的跟踪实现。简介它是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的相应关系,从而计算出相邻帧之间物体的运动信息的一种方法。一般而言,光流是...

2018-12-06 18:50:09 3350 1

SLAM常见面试题集锦.docx

收集了SLAM常见面试题,且大部分都给出了相关的参考答案。没有积分的同学,也可以参考博客:

2019-09-30

ORB-SLAM2源码详解.zip

从代码结构、系统入口、分线程详细的讲解了ORB-SLAM2的方方面面,以流程图的形式详述了算法执行的原理、执行流程等,是不错的学习参考资料。

2019-06-20

SfM三维重建:BA优化【VS2015+OpenCV3.4+PCL1.8+Ceres Solver】

使用BA优化对SfM三维重建的结果进行非线性优化,环境:VS2015+OpenCV3.4+PCL1.8+Ceres Solver,包含两张图、多张图BA优化代码及images文件。

2019-03-15

SfM多视图三维点云重建【VS2015+OpenCV3.4+PLC1.8】–完整工程文件

基于增量式SfM实现多视图三维点云重建,完整的工程文件,内含所需图片,可直接运行。环境:Win10+VS2015+OpenCV3.4+PLC1.8。

2019-03-12

SfM稀疏三维点云重建【VS2015+OpenCV3.4+PLC1.8】--完整工程文件

基于SfM实现视觉稀疏三维点云重建,完整的工程文件,内含所需图片,可直接运行。环境:Win10+VS2015+OpenCV3.4+PLC1.8。

2019-03-08

双目立体视差图进行三维点云重建【OpenCV3.4.1+PCL1.8】

基于双目立体视差图进行三维点云的重建,并提供PFM文件转成Mat格式的接口。点云重建过程清晰明了、内含所需的所有文件,详情见:https://mp.csdn.net/mdeditor/86644361

2019-02-01

SICK—LMS400激光传感器测距程序【Win10+VS2015】

Win10+VS2015环境下实现的SICK LMS400激光传感器测距程序源码,将激光扇面所有点的距离转换成实际距离,并将距离存储到distance.txt文件里。

2019-01-18

PCL+VS2015实现点云可视化

基于【Win10 x64+VS2015+PCL1.8.1】环境实现两种点云的可视化方法,内含点云文件,可直接运行。

2019-01-10

LeetCode题解(C++版)

LeetCode题解(C++版)分14章对LeetCode题目进行详细分析,编码规范良好、适合读者反复揣摩,模仿,甚至在纸上默写。

2019-01-08

KLT光流法目标跟踪的OpenCV源码实现

基于KLT光流法实现对视频中的运动目标进行跟踪,包含《learning opencv3》源码实现及《opencv3 cookbook》的简化实现版本。

2018-12-06

1积分-Effective STL(中文版)—高清、无水印+书签详细

Effective STL(中文版):该版本为高清、无水印,且书签详细完整。 注:收1积分一是知识付费虽好,但自己确实穷;二是这也是我从网上找到的,不好意思多收。

2018-11-21

【免费】数据结构(C++版)第三版_邓俊辉【12章全】(含习题解析、讲义/代码/图片)

内容介绍:包含该书的2个版本:版本1只有1-9章(带目录完整版)+版本2包含全12章,但目录只有简单的章节号;还包含配套的习题解析+相关讲义/代码/图片(讲义及代码等为下载链接,可自取)。 注:网上目录详细的版本,大多只包含1-8章;而目录详细且内容全面的多需5-30个CSDN积分;这里是自己花时间和精力整理的,所以收1个积分意思一下;如果积分不够,也可前往作者MOOC网址下载:https://dsa.cs.tsinghua.edu.cn/~deng/ds/dsacpp/index.htm

2018-11-21

ORB+ELAS+DIASY+LBP算法生成视差图

主要是基于ORB特征描述子得出稠密视差图,内容清晰,是不错的教程。

2018-10-25

ELAS算法原文+库文件+VS2015x64实现

文件内含ELAS算法英文原文及作者发布的源码库文件,基于VS2015实现的x64版的工程。

2018-10-19

C++实现的MFC加减法计算器

C++写的基于MFC框架的简单的加减法计算器,新手练习用。

2017-12-03

空空如也

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

TA关注的人

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