自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 字符串中特定子序列出现的次数(动态规划)

题目:给定一个字符串,求子序列 “cwbc” 出现的次数思路:动态规划令 dp[i][j] 表示前 i 个字符中匹配了字符串 “cwbc” 中前 j 位(j = 1,2,3,4)的个数。转移方程:dp[i][1] = ( dp[i - 1][1] + ( s[i] == ‘c’ )) % Moddp[i][2] = ( dp[i - 1][2] + ( s[i] == ‘w’ ) * dp[i - 1][1] ) % Moddp[i][3] = ( dp[i - 1][3] + ( s[i] =

2021-03-09 17:06:19 3151 3

原创 子序列个数——动态规划

题目:统计一个字符串中全部不同的子序列的个数思路:动态规划求解令 f[i] = 前 i 个元素中包含的全部子序列的个数那么状态转移方程分为下面两种情况:当第 i 个元素在前面 i - 1 个字符中没有出现时, f[i] = f[i - 1] + f[i - 1] + 1。可以看出 f[i] 分为了三个部分,其中第一个 f[i - 1] 表示前面 i - 1 长度的字符串包含的子序列个数,第二个 f[i - 1] 表示在前面 i - 1 长度的字符串后面添加第 i 个字符,第三个 1 表示第 i 个

2021-03-09 16:24:54 670

原创 C++求解N个数的最大公约数、最小公倍数

一、2个数的最大公约数// 辗转相除法int gcd(int a, int b){ if (b == 0) return a; return gcd(b, a % b);}// 也可以直接用STL: __gcd(a, b);二、2个数的最小公倍数int lcm(int a, int b){ int t = gcd(a, b); return a / t * b;}// (a * b) / gcd 也可以,但是a / gcd * b 是为了防止爆longlong证明:  假

2021-03-08 19:12:12 2288

原创 XTDrone目标检测

编译Darkent_ROS方法一:(推荐)直接clone,记得加–recurse-submodules,防止文件缺失cd ~/catkin_ws/srcgit clone --recurse-submodules https://gitee.com/robin_shaun/darknet_ros_yolov4.git下载完成后,将darknet_ros_yolov4文件改名darknet_ros_yolov4,我也不知道为什么,不修改的话会报错。然后编译:catkin_make -DCMA

2020-11-15 09:55:30 1691 3

原创 Ubuntu安装opencv3.4.0以及opencv_contrib3.4.0

因为经常重装系统,且每次重新装系统都要重新安装opencv,因此在此记录一下整个过程,这样以后就不用再去找安装教程了。下载opencvhttps://github.com/opencv/opencv 进入克隆下来的opencv目录,切换版本到一个较高版本——此处使用版本号3.4.0:git checkout 3.4.0下载opencv_contribhttps://github.com/opencv/opencv_contrib注意,对于opencv和opencv_contrib都需要切

2020-10-24 18:51:55 264

原创 Gazebo11的更新与安装

Melodic自带的Gazebo版本过低,建议升级。Gazebo安装见gazebo官网,需注意以下四点。删除gazebo9以及相关插件选用Alternative installation: step-by-step的安装方式,安装最新的gazebo11如果安装有依赖问题,可以使用sudo aptitude install gazebo9,选择合理的依赖解决办法(别把ROS删了)Gazebo本身是独立于ROS的,因此在单独安装了gazebo后还需要安装ROS的Gazebo插件整体流程:首

2020-10-23 21:02:16 6913 8

原创 VINS-Course代码解析——run_euroc前端数据处理

vins_mono总框架如下:主要分为三大块:我们先从主函数(main)入手:主函数中有三个线程,读取完数据集和配置文件的路径后就会进入这三个线程,如下图:thd_BackEnd线程:thd_PubImuData线程:从MH_05_imu0.txt文件中获取imu信息,并检查imu数据是否乱序(根据时间戳),最后将imu装进队列imu_buf中并发布。thd_PubImageData线程:从MH_05_cam0.txt文件中获取image信息,并检查image数据是否乱序,再对图像进行特征

2020-08-20 10:59:22 1027 2

原创 VSCode中配置LaTex

请允许我厚着脸皮沾上三个博客教程,还设为原创…TexLive&VSCode安装配置教程VSCode中使用LaTex的配置VScode + LaTex + TexLive 搭建

2020-07-14 01:11:21 234

原创 Ubuntu18.04启动后无法进入桌面修复方法(图文)

引言(吐槽可略过):Ubuntu是应用广泛的Linux操作系统,特别是在机器学习应用中,通过调用NVIDIA显卡的GPU进行计算和研究的主要平台之一。但是由于NV显卡的存在,有可能会让Ubuntu在驱动加载上问题,造成开机启动无法进入系统。一开是我以为是电脑的问题,然后各种询问商家,后来一想,能不能是镜像的问题,然后去官网下载IOS,安装好后重启了几次,没什么问题。几天后,发现又启动不了了。然后才想到是不是Ubuntu本身的问题,然后google、baidu后,发现是显卡的问题。一、问题表现进入Ubu

2020-06-19 15:21:10 22363 18

原创 Ubuntu18.04安装教程——超详细的图文教程

Ubuntu18.04镜像

2020-06-13 11:13:44 127894 18

原创 视觉SLAM —— 李群与李代数

一、群1.1 群的定义群(Group)是一种集合加上一种运算的代数结构。把集合记作A,运算记作 · ,那么群可以记作G = (A,· ),群要求这个运算满足如下条件(封结幺逆——凤姐咬你):封闭性:∀a1,a2 ∈ A, a1 ·a2 ∈ A.结合律: ∀a1,a2,a3 ∈ A, (a1 ·a2)·a3 = a1 ·(a2 ·a3).幺元:∃a0 ∈ A, s.t. ∀a ∈ A, a0 ·a = a·a0 = a.逆:∀a ∈ A, ∃a−1 ∈ A, s.t. a·a−1 = a0..

2020-05-30 16:39:53 1827

原创 视觉SLAM——三维空间刚体运动

让我们带着疑问来开启三维空间刚体运动的学习吧!为什么要学习三位刚体运动?三维刚体运动描述的是什么呢?我们研究的机器人的位姿是需要利用三维刚体运动(假设为刚体)的规律来求解。那什么是位姿呢?就是指当前机器人坐标系相对世界坐标系的旋转与位移。为什么是旋转与位移呢?自己脑补去 = =以下涉及的是旋转有关的知识。因为平移操作在数学上就相当于在对坐标系旋转后加上了一个平移向量(列向量)。一、旋转矩阵1.1坐标系间的欧式变换设某个正交基(e1,e2,e3) 经过一次旋转变成了(e’1,e’2,e’3

2020-05-28 01:13:42 396 1

原创 Eigen中几何模块数据演示

一、旋转向量1.0 初始化旋转向量:旋转角为alpha,旋转轴为(x,y,z)Eigen::AngleAxisd rotation_vector(alpha,Vector3d(x,y,z))1.1 旋转向量转旋转矩阵Eigen::Matrix3d rotation_matrix;rotation_matrix=rotation_vector.matrix();Eigen::Matrix3d rotation_matrix;rotation_matrix=rotation_vector.toRota

2020-05-27 22:56:11 463

原创 视觉里程计之非直接法

在slam的前端中有两大主流算法,根据是否提取特征点,分为直接法和非直接法。那本文章就带大家领略一下优秀的非直接法叭 wink~我们将分为三部分进行讲解,分别为 特征提取、特征匹配、位姿估计算法设计1.1 特征提取...

2020-04-25 17:53:15 454

原创 Opencv DNN人脸检测

前言OpenCV 3.3正式发布后,对深度学习(dnn模块)提供了更好的支持,dnn模块目前支持Caffe、TensorFlow、Torch、PyTorch等深度学习框架。另外,新版本中使用预训练深度学习模型的API同时兼容C++和Python,让系列操作变得非常简便从硬盘加载模型;对输入图像进行预处理;将图像输入网络,获取输出的分类。当然,我们不能、也不该用OpenCV训练深度学...

2020-02-28 21:25:36 1833 1

转载 张正友相机标定Opencv实现以及标定流程&&标定结果评价&&图像矫正流程解析

使用Opencv实现张正友法相机标定之前,有几个问题事先要确认一下,那就是相机为什么需要标定,标定需要的输入和输出分别是哪些?相机标定的目的:获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的选择和平移矩阵),内参和外参系数可以对之后相机拍摄的图像就进行矫正,得到畸变相对很小的图像。相机标定的输入:标定图像上所有内角点的图像坐标,标定板图像上所有内角点的空间三维坐标(一般情况下假定图像位...

2020-02-20 23:02:22 619

原创 计算机视觉:摄像机标定(循序渐进理解到应用)

一、前言最近在做零件的尺寸测量,由于精度要求,所以需要用到相机标定来消除畸变误差。网上查找了很多资料,看了好多二、摄像机模型这部分是介绍相机模型的,比较劝退,我们后续用到的模型是针孔摄像机,因此大家知道针孔摄像机成像原理就行。为了标定摄像机,我们有必要建立一个模型,该模型由摄像机、镜头和图像采集卡组成,这个模型可以将世界坐标系中三维空间点投影到二维图像中。再机器视觉应用中常用的有两种不同...

2020-02-20 22:45:55 1733 5

转载 相似、仿射、射影变换区别

刚性变换:只有物体的位置(平移变换)和朝向(旋转变换)发生改变,而形状不变,得到的变换称为刚性变换。下面分别从等距变换,相似变换,仿射变换,射影变换几个部分分别介绍:1、等距变换(欧式变换)它相当于是平移变换(t)和旋转变换(R)的复合,等距变换前后长度,面积,线线之间的角度都不变。自由度 6 (3+3)2、相似变换等距变换和均匀缩放(S)的一个复合,类似相似三角形,体积比不变。自...

2020-02-20 20:55:40 1830

转载 线性动态规划

一,概念篇1,动态规划:通过计算出小问题的最优解,可以推出大问题的最优解,从而可以推出更大问题的最优解,最小问题即是边界情况。2,子问题(小问题):子问题是一个与原问题有着类似的结构,但规模比原问题小的问题。3,最优子结构:动态规划的问题一般是求解全局最优解,而全局最优解是由局部的最有解一步一步推出,局部的最优解称为最优子结构。4,动态规划的基本思想:将待求解的问题划分为若干个阶段(子问题...

2020-02-16 20:51:52 291

原创 动态规划之区间DP详解

这几天在做有关dp的题,看到一个石子合并的问题,本来以为是个贪心,后来仔细一想压根不是贪心。贪心算法的思路是每次都取最大的,然而石子合并问题有个限制条件就是每次只能取相邻的,这就决定了它不是个贪心…我们接下来会先直接上区间DP的模板,然后结合石子合并这道经典例题来讲解。一、区间DP区间dp其实就是一种建立在线性结构上的对区间的动态规划。主要的方法有两种,记忆化搜索和递推。区间dp,顾名思义...

2020-02-16 20:44:15 2968 1

原创 动态规划之0-1背包问题以及其空间优化讲解

开始背包问题讲解前,我们先粗略的了解一下动态规划。动态规划,无非就是利用历史记录,来避免我们的重复计算。而这些历史记录,我们得需要一些变量来保存,一般是用一维数组或者二维数组来保存。一、0-1背包问题给定n个重量为w1, w2, w3, … , wn, 价值为v1, v2, v3, … , vn 的物品和容量为C的背包,求这个物品中一个最有价值的子集,使得在满足背包的容量的前提下,包内的总价...

2020-02-12 21:41:07 1668

原创 基于MFC的Basler工业相机SDK开发

一、软、硬件准备VS2017opencv3.4.6相机:Basler acA2500-14gm驱动:pylon二、软硬件配置下载安装pylon,到basler官方网站下载适合自己相机的pylon版本(我的是pylon 5.0),安装的时候注意选择安装开发者模式(开发者模式才含有SDK)。搜索相机IP并改成固定IP,使系统和相机利用路由器连接在同一个局域网内。打开Pylon Vi...

2020-02-12 16:08:12 4038 6

原创 YOLOv3网络结构分析以及工作流程

注意:本文章有很多图,但是都是YOLOv3的结构图,只是每张图表达出的信息都各有特色,可将这些结构图结合起来,能更好的理解。1.Darknet-53 模型结构在论文中虽然有给网络的图,但我还是简单说一下。这个网络主要是由一系列的1x1和3x3的卷积层组成(每个卷积层后都会跟一个BN层和一个LeakyReLU)层,作者说因为网络中有53个convolutional layers,所以叫做Dark...

2020-02-10 00:32:31 3287 1

原创 YOLO性能评价指标

假设你的分类系统最终的目的是:能取出测试集中所有飞机的图片,而不是大雁的图片。TP:真实类别为飞机,预测结果为飞机。FP:真实类别为大雁,预测结果为飞机。FN:真实类别为飞机,预测结果为大雁。TN:真实类别为大雁,预测结果为大雁。准确率:Acc= (TP + TN)/ S 预测和groundtruth相同的个数占总个数的比例,即来衡量预测的正确率。误检率:FPR= FP / Nf...

2020-02-09 23:39:45 8264

原创 非最大值抑制(NMS)

现在我们学到的算法中可能存在对一个物体做出多次检测。所以算法不是对某个对象检测出一次,而是多次。如图:

2020-02-09 00:35:07 583

原创 交并比(IoU)

如何判断对象检测算法运作良好呢?可以用交并比函数来评价对象检测算法。在对象检测中,我们希望边框能定位目标,但是如果实际边界框如图所示这样,你的算法给出了紫色框,那这个结果是好还是坏呢?我们给出了IoU函数来进行评价。IoU = ( bounding box ∩ Ground Truth)/ ( bounding box ∪ Ground Truth)= (绿色)/ (蓝+绿+黄)由式子...

2020-02-09 00:03:08 1655

原创 Anchor Boxes详解

为什么要用anchor box?到目前为止,对象检测中存在一个问题就是每个格子只能预测一个对象,如果想让一个格子检测出多个对象,你可以这么做,就是使用anchor box这个概念,我们从一个例子开始讲吧。假设我们有这样一张图片,对于这个例子,我们使用3x3的网格,可以观察到,行人和汽车的中心几乎在同一个网格,然而我们以前的方法一个格子只能预测一个对象,而且对于y输出的的向量量???? = [???????? ...

2020-02-08 23:52:04 5761 1

转载 边框回归(Bounding Box Regression)详解以及数学公式详解

为什么要边框回归?什么是边框回归?边框回归怎么做?边框回归宽高,坐标为什么这样设计?为什么边框回归 只能微调,在离Ground Truth近的时候才能有效?为什么要边框回归?这里引入别人的理解,如图:对于上图,绿色的框表示Ground Truth, 红色的框为Selective Search提取的Region Proposal。那么即便红色的框被分类器识别为飞机,但是由于红色的...

2020-02-08 21:52:24 1736 1

原创 Bounding box(bbox) 预测

在出现Bounding box预测之前,一般都是通过滑动窗口进行目标检测。一、滑动窗口简单来说,就是那个框,在图片上移动,就看框里面有没有你要找的目标其实就是用不同大小的图,在图片上从左到右,从上到下的搜索,找到你要的目标,因为目标的大小不一样,所以很多时候你看你需要很多个尺寸的框来搜索,所以基本是属于穷举法啦,找到适合的为止。然后将每个尺寸的框input到网络中进行预测。可知,这样...

2020-02-08 21:17:02 9655 1

转载 一文看懂迁移学习:怎样用预训练模型搞定深度学习?

跟传统的监督式机器学习算法相比,深度神经网络目前最大的劣势是什么?贵。尤其是当我们在尝试处理现实生活中诸如图像识别、声音辨识等实际问题的时候。一旦你的模型中包含一些隐藏层时,增添多一层隐藏层将会花费巨大的计算资源。庆幸的是,有一种叫做“迁移学习”的方式,可以使我们在他人训练过的模型基础上进行小改动便可投入使用。在这篇文章中,我将会讲述如何使用预训练模型来加速解决问题的过程。注:这篇文章默认...

2020-01-28 23:39:20 354

原创 python-opencv尺寸测量

首先,利用机器视觉来测定零件尺寸,我们能够直接得到的是图片的像素,要想获得尺寸大小,我们必须找到像素和实际尺寸吃的关系。我们在这里定义一个比例概念:每度量比的像素(pixels per metric ratio)。近似含义是每个单位指标中包含的像素数。例如,图表上的1厘米包含100张图像。实际上,相当于引用对象的作用,例如已知地图上的引用材质,我们可以使用此引用对象将其转换为地图上其他对象的...

2020-01-23 21:48:55 18695 37

原创 opencv之图像混合

目录一. 前言二、图像混合ROI区域图像叠加线型图像混合算法原理三、全部代码一、前言我们做图像处理的时候,有时候会遇到一种难题——想要获得一个理想图片,但是往往一张图片不能完全包含我们想要的东西,想要将两个图片的内容在同一张图片上展示出来,因此图像混合可以帮我们实现。像幻灯片翻页时设置的前后页缓慢过渡叠加效果,以及电影情节过渡时经常出现的画面叠加效果都运用了图像混合操作。接下...

2020-01-23 18:50:35 692

转载 图像梯度运算-Sobel算子

1.cv2.Sobel(src, ddepth, dx, dy, ksize) 进行sobel算子计算参数说明:src表示当前图片,ddepth表示图片深度,这里使用cv2.CV_64F使得结果可以是负值, dx表示x轴方向,dy表示y轴方向, ksize表示移动方框的大小2.cv2.convertScalerAbs(src) 将像素点进行绝对值计算参数说明: src表示当前图片sob...

2020-01-23 17:44:46 2755

原创 AVT工业相机Windows、Opencv开发——驱动相机(超详细)

一、概述1.1使用Vimba控制相机需要经历以下几个步骤。1.打开Vimba2.查找相机列表3.打开特定相机4.配置参数(可选)5.采集 :采集过程共分为5步,具体见1.26.关闭相机7.关闭Vimba1.2采集的步骤:1.准备图像采集 : 让Vimba知道缓冲区(camera.AnnounceFrame()) -> 启动捕获引擎(camera.StartCapture(...

2019-12-06 00:36:51 8211

原创 AVT工业相机Windows、Opencv开发——相机的配置

工业相机与软件连接接口问题,一直是两者相连、数据相通的一个难点。本文采用的是德国Allied vision工业相机,与其他使用的USB接口的相机不同,该工业相机的接口类型为GigE。因此,要使工业相机和软件连接成功,从而可以使用软件调用工业相机,则必须使用工业相机特有的SDK对相机进行二次开发。一、硬件准备1.官网下载Vimba网址:下载地址选择第三个。2.网络配置下载完成后,打...

2019-12-03 20:31:07 4889 1

原创 常见的字符串处理——摘抄的博客合集

此文章是我作为一个小白,在学习字符串处理时看到的通俗易懂的好文章。因此引用过来方便以后的复习。1.KMP从头到尾彻底理解KMP2.Manacher互联网侦察微信公众号讲解,虽然文章很长,但是他讲解的十分清楚3.ac自动机讲述了AC自动机的基本思想和实现原理,如何构造AC自动机,着重讲解AC自动机在算法竞赛中的一些典型应用...

2019-11-12 22:12:34 80

转载 介绍一篇不错的CUDA入门博客(转)

----------------------------------------------正文--------------------------------------------------------------鉴于自己的毕设需要使用GPU CUDA这项技术,想找一本入门的教材,选择了Jason Sanders等所著的书《CUDA By Example an Introduction t...

2019-08-21 19:25:01 213

原创 数字图像处理(一) —— 图像腐蚀、膨胀(快速入门)

**一、**理论与概念讲解 — 从现象到本质**一些基本符号和关系:**https://blog.csdn.net/junpengxue/article/details/79958651**结构元素:**二维结构元素可以理解为二维矩阵,矩阵的元素值为0或1;通常结构元素小于要处理的图像。设有两幅图象B,X。若X是被处理的对象,而B是用来处理X的,则称B为结构元素(structure ele...

2019-08-07 22:24:34 4051

转载 MFC中的OnInitDialog()的调用过程

在创建对话框(创建对话框的方法有:Create(),CreateIndirect(),DoModal())时,Windows发送WM_INITDIALOG消息到该被创建的对话框,这就立即激发该对话框的OnInitDialog()函数,即,在显示该对话框前使用OnInitDialog()函数初始化该对话框的数据及内容,以及可以使用该函数在显示对话框前布置控件的显示大小及位置。重写此方法的目的是如果...

2019-08-04 22:06:01 1667

转载 学习图像处理之Opencv视频操作基础

本篇文章我们将学习如何使用VideoCapture类来读取视频并显示,以及调用摄像头。一、Opencv视频操作基础之VideoCapture类Opencv通过VideoCapture类来对视频进行读取操作以及调用摄像头,下面是此类的API:1.VideoCapture类的构造函数: C++:VideoCapture: :VideoCapture() C++:VideoCaptur...

2019-07-27 23:17:11 251

空空如也

空空如也

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

TA关注的人

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