![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
alan
Alan Lan
高精地图、定位、VSLAM、VIO、LIO、多传感器标定、自动驾驶、无人机、点云处理
展开
-
判断点是否在矩形框(多边形)内
判断点是否在矩形内:只需要判断该点是否在上下两条边和左右两条边之间就行。判断一个点是否在两条线段之间夹着就转化成,判断一个点是否在某条线段的一边上,就可以利用叉乘的方向性,来判断夹角是否超过了180度 如下图只要判断(AB X AE ) * (CDX CE) >= 0 就说明E在AB,CD中间夹着,同理计算另两边DA和BC就可以了。最后就是只需要判断(AB X AE ) * (CD X CE) >= 0&& (DA X DE ) * (BC X BE...原创 2021-02-19 17:40:15 · 1577 阅读 · 1 评论 -
图(节点+边)可视化
一、简介DOT是一种文本图形描述语言。DOT语言文件通常具有.gv或是.dot的文件扩展名。当然,在编写好.dot或者.gv的文件之后,需要有专门的程序处理这些文件并将其渲染成为图片,dot就是其中一款程序,它可以将DOT语言描述的图形渲染成.png、.jpg、.pdf等多种类型。就像gcc之于c代码,g++之于cpp代码一样。二、DOT语法1、基本语法graph(无向图)或者digraph(有向图)表示图,然后{}中的内容是对图的描述,注释风格和C类似(“//”用于单行注释,/**/用于多原创 2021-02-19 17:34:02 · 1534 阅读 · 1 评论 -
chrome常用插件
1、Dark Reader(黑色主题,适用于任何网站)2、Google翻译(设置为双击单词立即弹出翻译)3、屏蔽百度推广(屏蔽百度搜索右侧推广)4、广告净化器(屏蔽任何网站的广告)...原创 2020-01-03 15:33:22 · 1136 阅读 · 0 评论 -
ArUco使用
1.下载:https://sourceforge.net/projects/aruco/files/2.编译安装:(cmake+make)3.标定相机:标定文件位置:aruco-2.0.19/utils_calibration/aruco_calibration_board_a4.pdf,A4纸打印出来标定程序位置:aruco-2.0.19/build/utils_cali...原创 2018-11-02 17:53:15 · 7110 阅读 · 5 评论 -
off文件的格式、写入和显示
一、介绍物体文件格式(.off)文件用于表示给定了表面多边形的模型的几何体。这里的多边形可以有任意数量的顶点。普林斯顿形状Banchmark中的.off文件遵循以下标准:1、.off文件为ASCII文件,以OFF关键字开头。 2、下一行是该模型的顶点数,面数和边数。边数可以忽略,对模型不会有影响(可以为0)。3、顶点以x,y,z坐标列出,每个顶点占一行。4、在顶点列表之后是...原创 2019-01-02 15:55:57 · 8410 阅读 · 0 评论 -
json文件读写
写入:#include <jsoncpp/json/json.h>void main(int argc, char **argv) { Json::Value root; root["ref_cam_id"] = 0; Json::Value cam0; cam0["camera_id"] = 0; cam0["width"] = 1...原创 2018-12-28 20:22:19 · 425 阅读 · 1 评论 -
yaml文件的读写
写入:#include <yaml-cpp/yaml.h>void main(int argc, char **argv) { YAML::Node camera_config_nodes; camera_config_nodes["width"] = 1920; camera_config_nodes["height"] = 1080; ...原创 2018-12-28 21:32:30 · 2196 阅读 · 0 评论 -
从带时间戳的图像数据集中挑选想要的图像时间戳
#include <iostream>#include <vector>#include <string>#include <set>#include <fstream>#include <opencv2/opencv.hpp>int main(int argc, char **argv) { std:...原创 2019-01-02 17:22:47 · 1187 阅读 · 0 评论 -
KITTI数据集相关
参考:https://blog.csdn.net/yangziluomu/article/details/78338405原创 2019-07-12 16:25:53 · 471 阅读 · 0 评论 -
图说卡尔曼滤波(C++实现)
什么是卡尔曼滤波?对于这个滤波器,我们几乎可以下这么一个定论:只要是存在不确定信息的动态系统,卡尔曼滤波就可以对系统下一步要做什么做出有根据的推测。即便有噪声信息干扰,卡尔曼滤波通常也能很好的弄清楚究竟发生了什么,找出现象间不易察觉的相关性。因此卡尔曼滤波非常适合不断变化的系统,它的优点还有内存占用较小(只需保留前一个状态)、速度快,是实时问题和嵌入式系统的理想选择。如果你曾经Goog...原创 2018-08-04 21:41:29 · 11816 阅读 · 3 评论 -
IMU预积分
IMU预积分论文地址:On-Manifold Preintegration for Real-Time Visual-Inertial Odometry论文中的几处错误: 论文中公式推导证明:泡泡机器人:邱笑晨:原创 2018-10-31 12:07:58 · 721 阅读 · 0 评论 -
标量、向量、矩阵之间的求导关系
一、矩阵求导 二、几种重要的矩阵 1、梯度(Gradient)2、雅克比矩阵(Jacobian matrix)3、海森矩阵(Hessian matrix)三、其它性质矩阵的乘积微分 参考:矩阵导数矩阵、向量微分计算wiki:维基百科矩阵求导公式 ...原创 2018-10-29 12:40:31 · 1358 阅读 · 0 评论 -
MATLAB常用命令
main.cpp#include <fstream>std::ofstream fout("..//result.txt");//std::ofstream fout("C:\\Users\\alan\\Desktop\\result.txt");fout << x << " " << y << " " << z ...原创 2018-09-06 14:27:52 · 297 阅读 · 0 评论 -
双目立体匹配算法SGBM
semi-global matching(SGM)是一种用于计算双目视觉中视差(disparity)的半全局匹配算法,在OpenCV中的实现为semi-global block matching(SGBM)。第一部分:SGBM算法原理:一、预处理Step1:SGBM采用水平Sobel算子,把图像做处理,公式为:Sobel(x,y)=2[P(x+1,y)-P(x-1,y)]+ P(x...原创 2018-08-07 23:01:20 · 58325 阅读 · 19 评论 -
opencv中viz模块的编译和使用(VS2015)
1、下载cmake(a) 下载链接:https://cmake.org/download/,下载cmake-3.12.1-win64x64.zip(免安装,其它版本也行)2、下载编译VTK(a) 下载链接:https://www.vtk.org/download/,下载VTK-6.3.0.zip(其它版本也行)(b) 编译VTK:打开cmake-gui进行配置选择vtk源码...原创 2018-08-11 00:49:49 · 2889 阅读 · 1 评论 -
A*算法(C++实现)
简易地图如图所示简易地图, 其中绿色方块的是起点 (用 A 表示), 中间蓝色的是障碍物, 红色的方块 (用 B 表示) 是目的地. 为了可以用一个二维数组来表示地图, 我们将地图划分成一个个的小方块.二维数组在游戏中的应用是很多的, 比如贪吃蛇和俄罗斯方块基本原理就是移动方块而已. 而大型游戏的地图, 则是将各种"地貌"铺在这样的小方块上.寻路步骤1. 从起点A开始, 把它作...原创 2018-08-03 18:34:22 · 38220 阅读 · 28 评论 -
相似变换Sim3推导(C++实现)
C++实现:#include <iostream>#include <opencv2/opencv.hpp>using namespace cv;using namespace std;Mat ComputeSim3(Mat &P1, Mat &P2);// Sim3仿真void main(){ Mat p1_c1 = (...原创 2018-09-26 12:52:20 · 2043 阅读 · 0 评论 -
八皇后问题(C++实现)
问题描述:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。#include<iostream>using namespace std;int ans;//解法数int vis[9];//每行可放置的列bool check(int r, int c)//检查该位置是否可行{ for (int...原创 2018-10-17 22:25:05 · 472 阅读 · 1 评论 -
LeetCode-200-岛屿的个数
题目:给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。class Solution {public: int numIslands(vector<vector<char>>& grid) { int ...原创 2018-10-28 23:13:11 · 159 阅读 · 0 评论 -
区域连通算法(C++实现)
#include <iostream>#include <stack>#include <opencv2/opencv.hpp>using namespace std;using namespace cv;void main(){ Mat input_img = imread("1.jpg");//输入图片路径 cvtColor(input...原创 2018-10-22 23:25:36 · 3520 阅读 · 0 评论 -
opencv通过FileStorage读写xml、yaml文件
FileStorage类FileStorage类将各种OpenCV数据结构的数据存储为XML或YML格式。构造函数:cv::FileStorage(const string& source, int flags, const string& encoding=string());参数说明:source:存储或读取数据的文件名(字符串),其扩展名(.xml 或 .ym...原创 2018-10-22 14:51:47 · 1713 阅读 · 0 评论 -
二叉树遍历(C++实现)
二叉树3种深度优先遍历(递归、非递归)、层次遍历,最简洁、最好记!#include<iostream>#include<stack>#include<queue>using namespace std;//节点定义struct Node{ char data; Node *left; Node *right; Node(const ...原创 2018-10-17 13:25:21 · 431 阅读 · 0 评论 -
LeetCode-50-Pow(x, n)
对于本题,当幂为n=-2147483648时,首先将n+1,再取绝对值后计算剩余的值:pow(x,-(n+1)),最终结果为x*pow(x,-(n+1))。 double myPow(double x, int n) { if (x == 0) return 0.0; if (n == 0) return 1.0; double ans = 1.0; if...原创 2018-10-18 23:40:17 · 184 阅读 · 0 评论 -
LeetCode-36-有效的数独
bool isValidSudoku(vector<vector<char>>& board) { int row[9][9] = {0}, col[9][9] = {0}, box[9][9] = {0}; for (int i = 0; i != board.size(); ++i) { ...原创 2018-10-18 21:48:46 · 142 阅读 · 0 评论 -
(C/C++)(读/写)(二进制文件/文本文件)
C++写二进制文件std::ofstreamfout("a.dat",std::ios::binary);intnNum=20;std::stringstr("Hello,world");fout.write((char*)&nNum,sizeof(int));fout.write(str.c_str(),sizeof(char)*(str.size()))...原创 2018-10-09 11:40:43 · 1148 阅读 · 0 评论