自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (2)
  • 收藏
  • 关注

原创 C++笔记---面向对象编程之继承关系的讨论

前言面向对象编程(OOP)是C++联邦中一个非常重要的部分,最近在学习effective C++的时候正好学习到这部分,所以就想按照自己的逻辑对其做一个总结,方便学习回忆。而继承是C++三大特性(继承、多态、封装)之一,其中涵盖的知识点比较多,比如说:继承可以是单一继承或者多重继承,继承关系可以是public、private或者protected,成员函数可以是pure virtual、impure virtual或者non-virtual等等。在经过学习之后发现自己对于继承的理解方式改变了,因为之前只

2022-04-25 21:31:25 1103 1

原创 C++笔记---对于单例模式的相关讨论

前言单例模式是程序设计中一种非常常见的设计模式,在面向对象编程的时候,对于某一个类的实例对象,如果我们为了不频繁的创建和销毁它并且全局都使用这一个实例,那么我们就可以将其设计为单例模式,单例模式在实际应用场景还是比较多的,比如我们使用的鼠标箭头在系统运行过程中只能有一个,再比如我们设计登录框按钮的时候,即使多次单击也必须出现一个登录框实例。单例模式所涉及的知识点当前先将其归纳为3点:单例模式最基本的设计方法 既然我们要保证将class设计成单例模式,那么其必然利用了一定的设计方法才能保证当创建多个对

2022-04-13 17:16:54 952

原创 C++笔记---对象初始化的讨论

前言初始化的必要性: C++悠久的发展历史导致其看起来更像是一个联邦,包括很多部分,比如说c语言部分、面向对象编程的部分、STL部分等等,这导致C++的在使用的时候需要考虑每个部分的特性及特点,拿对象的初始化部分来说,c语言部分的array声明之后系统不保证将数组初始化,而STL部分的vector却有这种功能,而当我们无意中使用为初始化的对象可能会导致程序出现不明确的行为,而记住C++各个部分的初始化规则又很繁琐,所以我们最保险的做法就是在使用对象之前保证对其进行初始化,这是一个非常好的习惯!常见的初始

2022-04-07 11:46:13 1213

原创 MarkDown语法的使用

markdown是一种轻量级的标记语言,允许使用纯文本去编辑文档。现在markdown的用处很多,比如工程的readme.md文档就是使用markdown语言来书写的。在我看来markdown语言的优势在于只使用纯文本就能实现标题,文字加粗倾斜删除,序列号,链接,代码,表格,图片的显示,而且使用markdown来写文档的时候更具逻辑性。当然可以在空白文档里使用任何编辑器书写markdown语言,但是需要能够解析的软件或者插件才能够显示出各种形式,目前在Ubuntu里使用的是Typora,可以将你的mar

2021-10-25 21:21:42 144

原创 3D车辆检测AP评价指标代码的理解

课题研究的是单目3D车辆的识别,采用的目标检测网络是SMOKE,为了可以更好的定量评测训练模型的性能,需要使用到合理的评测指标,目前比较流行的评测指标是得到多组precision和recall值画出PR曲线,然后计算PR曲线下的面积得到AP。关于更详细的原理的介绍已经有很多优秀的文章,本篇博客主要是结合Kitti数据集的官网代码以及自己的理解做的一些总结,如有理解不当请斧正。基本概念的理解IOU:IOU指的是两个检测框的交并比,也就是两个框的重合程度,数值越大代表两个框重合度越高。在计算AP的过

2021-10-18 19:55:57 1784 2

原创 cmake学习5:如何将自己的库作为第三方库给别人使用

前面两篇文章我们分别将自己的工程安装在本地和将自己的工程打包给其他人直接使用,现在我们要做的就是如果在其他的cmake里面使用我们自己的工程,从build路径,从local安装,从打包的文件中

2021-10-09 14:35:11 2230 1

原创 cmake学习4:如何将自己的工程打包给别人

在上一个部分我们实现了二进制文件和库的安装,但是前面的安装是在我们build构建出目标之后再进行的install,而此部分我们需要构建一个可以进行二进制文件安装的安装包用于部署到其他机器上.其实也就是将可执行文件,库和头文件打包移植到其他机器上运行.我们需要在CMakeLists.txt中增加如下内容:include(InstallRequiredSystemLibraries)set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR

2021-10-09 14:05:29 2133

原创 cmake学习3:如何在本地安装自己的工程

install的意思是将编译出来的库和可执行文件安装到电脑上的某一位置, 对于我们的Tutorial项目来说有两部分:部分1:安装MathFunctions库和对应的头文件部分2:安装可执行文件Tutorial和所需的配置文件对于MathFunctions我们需要在MathFunctions/CMakeLists.txt中添加如下语句install(TARGETS MathFunctions DESTINATION lib)install(FILES MathFunctions.h DE

2021-10-09 11:39:44 552

原创 cmake学习2:如何将源代码编译成库并使用

前面做了基本的cmake操作,但是并没有涉及到对自己封装的库的使用,这次我们将自己实现的sqrt函数封装成库,然后在CMakeLists.txt中进行操作,对此库进行选择性的使用,文件结构设计如下:单独一个MathFunctions文件夹将,里面的mysqrt.cxx是对sqrt函数的自己实现,里面的CMakeLists.txt文件负责将其编译成库.我们整体的思路应该是这样的: 在二级目录下的CMakeLists.txt中将mysqrt.cxx编译成库 在一级目录下的CMa...

2021-10-09 11:00:09 3015

原创 cmake学习1:基本的CMakeLists的编写

本系列教程为借鉴cmake官网Tutorials内容整理而成,测试的cmake版本为3.20.4,Tutorial源代码:最基本的项目就是通过一个.cpp源文件构建而成的可执行文件,对于此简单项目,CMakeLists.txt只需要三行内容(CMakeLists.txt与tutorial.cxx在同级目录):#required cmake minimum version cmake_minimum_required(VERSION 3.10)# set the project name

2021-10-09 10:35:51 1439

原创 ROS中坐标关系理解(基于cartographer和navigation)

不管是使用cartographer进行2D建图还是进行3D建图,其坐标转换关系其实是用的一个,而理清并正确的将其表示出来是建图成功的基础使用一以下命令

2020-12-10 22:58:42 2642 3

原创 pybind11使用记录---ubuntu下使用cmake编译c++工程为python库

前言:因为最近c++下的工程需要在python下调用,所以需要把c++编译成可供python调用的库,记录一下具体做法:编译c++有多种方法,因为我的是cmake构建的工程,所以直接在cmake的基础上编译成python库(c++中用了第三方库opencv和boost)下载编译pybind11下载pybind11:git clone https://github.com/pybind/pybind11.git安装pytest: pip install pytest编译:c.

2020-12-10 17:59:31 4696 4

原创 Ubuntu18.04下autoware1.14版本搭建(包括CUDA/cudnn/ROS/QT/NVIDIA drive)

没有声明版本的环境搭建都是耍流氓,因此需要首先明确安装autoware.ai1.14版本所需要的依赖环境,根据官网可知:Ubuntu:18.04ROS:MelodicQT:5.9.5或者更高CUDA:10.0NVIDIA driver:410.48或者更高cudnn(依照cuda选择对应的版本)Ubuntu的安装就不说了,需要注意一点是安装完ubuntu之后更新一下国内的下载源:https://www.cnblogs.com/mengw/p/11408118.html使用国

2020-12-08 14:23:40 3309

原创 C++学习之string类的一点点笔记

首先明确一点,c-风格的字符串是这么写的char s[] = "abcdefg";而在c++中,出现了一个string类,在使用它的时候需要 #include<string> ,这也是有时候在输入字符串时候有的一点区别:char s1[10]; cin.getline(s1) 与 string s2; getline(cin,s2)这是因为前者是类 istream...

2020-04-14 14:39:32 171

原创 C++学习之数组作为函数参数

一维数组C++将数组名解释为其第一个元素的地址对数组名使用sizeof函数得到整个数组的大小(字节为单位)(但是传参之后数组名就退化成单纯的指针了)对数组名用&取地址得到的整个数组的地址(内存块)在一维数组传参中,需要传入两个参数: 数组名和数组大小int sum_array(int* arr, int n){}int sum_array(int arr[],...

2020-04-04 12:01:12 3757

转载 C++学习之初始化列表的使用

原文章链接:https://blog.csdn.net/yhc166188/article/details/81586549 类对象的构造顺序是这样的:1.分...

2020-04-01 09:37:35 252

原创 C++学习之#define的替换

#define ASPECT_RADIO 1.512上面语句运用了宏定义,在代码中ASPECT_RADIO的值就是1.512,但是需要注意的是:宏定义语句的处理是预处理器进行操作的,也就是说在编译器对代码进行编译的时候,所有的ASPECT_RADIO就已经被替换成1.512了,如果程序中出现错误的时候,打印的信息是不会包含ASPECT_RADIO的,这无疑对错误的定位造成了困难。一般我们...

2020-03-26 17:32:30 2702

原创 C++学习之赋值运算符函数

什么时候赋值运算符符号被调用?一个已经被初始化的实例从另一个实例中被赋予初值的时候,赋值运算符函数被调用(注意其和拷贝构造函数的区别)Test T1, T2;T2 = T1; //assignment operator called什么时候我们应该写我们自己的赋值运算符函数?一般来说,如果class中不包含指针,我们就没有必要单独写自己的赋值运算符函数,因为编译器会为每个cla...

2020-03-24 15:44:46 390

原创 C++学习之如何看待C++

C++本来的名字叫C with Classes,也就是带有class的C语言,但是慢慢的其发展已经超越了原来的设定,不断的增加新的东西,虚函数(virtual function)、运算符重载(operator overloading)、多继承(multiple inheritance)、标准模板库(standard template library,STL)、异常处理(exception)、运行...

2020-03-24 00:14:11 343

原创 最小生成树之kruskal算法及查并集

kruskal算法是由Joseph Kruskal在1956年发表用来生成最小生成树的算法之一,另外一个经典的最小生成树算法是Prim算法,两者都是经典的贪心算法,区别在于prim算法以顶点作为操作对象,kruskal以边作为操作对象。此次我们主要研究一下kruskal算法。对于一个算法我们除了关心他是如何实现的,还关心其具体的应用。最小生成树的理论如下:在一给定的无向图G = (V, E)...

2020-03-15 17:23:54 751

原创 剪绳子问题解法及对于贪心和递归算法的理解

剪绳子问题是剑指offer算法题中一道考察贪心和动态规划算法的题,在做这道题的时候有两种基本的做法:将绳子尽可能分成长度为3和2,并且优先3,另一种解法是动态规划解法;当时自己对于贪心和DP并不能区分的特别清楚,并且做完这道题还不能够完全理解,因此又借助网上资料才能窥得一二,记录如下。题目:给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳...

2020-03-14 17:36:53 1038

转载 概率论之概念解析:极大似然估计

【导读】本文是数据科学家Jonny Brooks-Bartlett概率论基础概念系列博客中的“极大似然估计”一章,主要讲解了极大似然估计的若干概念。分别介绍了参数、直观理解极大似然估计、极大似然估计计算方法、极大似然估计与最小二乘法的区别、极大似然与极大概率的区别,作者层层递进、由浅及深地带我们揭开极大似然估计的神秘面纱,如果你对其概念和算法仍然有所迷惑,那么这篇文章或将给你带来更深的理解。专知内...

2020-03-02 17:28:06 1494

原创 LeetCode之K站中转内最便宜的航班(DP解法)

题目链接这个题着实花了一些功夫,因为自己对于这种最短距离或者最优路线之类的题不敏感,而且一直没有理解动态规划的解法,理解不了就无从下手,这里记录一下自己所经受的折磨,也算是总结一下。先将程序贴在这:class Solution {public: int findCheapestPrice(int n, vector<vector<int>>&amp...

2020-02-22 18:33:28 664

原创 目标检测之one-stage模型发展总结

由于广泛的应用和技术上的突破,目标检测(object detection)在近些年吸引了越来越多的注意力,以飞快的速度发展着。在导致目标检测领域飞速发展的众多因素中,深度卷积神经网络和GPU算力无疑占据着重要的地位。大多数顶尖的目标检测网络都充分利用了深度学习网络作为骨干网络用来提取图像特征进行分类和定位。如今,目标检测越来越多的应用在了多分类检测(multi-categories...

2020-02-18 20:41:49 3595

原创 LeetCode动态规划之最长回文子串

给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。输入: "cbbd"输出: "bb"首先,必须要明确最长回文子串的含义,简单来说就是 从前往后读和从后往前读 是一样的,按照我们动态规划解题3步骤:定义数组元素含义,找出数组元素间的含义和找出数组的初始值。...

2020-02-17 19:52:13 298

原创 结构体struct相关知识整理

前言:struct是c/c++中一种自定义的变量类型,可以用来定义struct变量,在程序设计中使用struct可以使得程序更加整洁清晰。struct在c/c++中用法不完全相同,现将相关知识整理如下,方便日后查找和交流。我们以以下结构体为例进行整理:struct stu{ char *name; //姓名 int num; //学号...

2020-02-07 10:50:29 878 2

原创 动态规划问题之编辑距离

前言:编辑距离此题为LeetCode的第72号题,本质上可以采用动态规划DP的方法求解,但是在求解的时候理解出现了问题,导致懵逼了一段时间,还好终于想通了,现将自己的理解思路、程序实现以及空间复杂度优化整理如下,希望可以帮到大家。问题描述: 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三...

2020-02-05 21:05:01 570

原创 STM32整理之通用定时器(一)

最近课题组的一个项目用到了STM32的定时器功能,因此对此进行一下整理,以免后续用到的话可以迅速的将相关知识拾起来,因为主要记录重点用到的功能,所以难免对其他地方有些疏忽。STM32的定时器功能十分强大,有高级定时器---TIM1和TIM8,基本定时器---TIM6和TIM7,还有通用定时器---TIM2~TIM5,因为项目中主要应用的是通用定时器,因此主要讲解通用定时器的应用。目前...

2020-02-02 16:55:31 1020

眼球识别控制系统

此系统在浏览器上运行,基于谷歌公司的tensorflow深度学习架构,能够通过电脑摄像头捕捉眼球,并进行训练,最后用眼球控制电脑光标的移动

2018-11-13

STM32通过WIFI联网

本代码使用STM32开发板通过WIFI模块与onenet云平台连接,实现云端通信

2018-07-13

空空如也

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

TA关注的人

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