摘要:c++异常处理的真正能力,不仅在于他能够处理各种不同类型的异常,还在于它具有为异常抛掷前构造的所有局部对象自动调用析构函数的能力。 在程序中,找到一个匹配的catch异常处理后,如果catch子句的异常类型声明是一个值参数,则其初始化方式是复制被抛掷的异常对象。如果catch子句的异常类型声明是一个
阅读全文
摘要:在编写软件时,不仅要有正确性,而且应该具有容错能力。这里就要引入异常处理了。 1、异常处理的基本思想 程序运行中的有些错误可以预料但不可避免的,如内存空间不足、硬盘上的文件被移动等由系统运行环境造成的错误。这时要力争做到允许用户排除环境错误,继续运行程序;至少要给出适当的提示信息。这就是异常处理程序
阅读全文
摘要:一个输入流对象是数据流出的源头,三个最重要的流类是istream、ifstream、istringstream。 istream类最适合用于顺序文本模式输入。基类ios的所有功能都包括在istream中。 我们通常使用预先定义的cin对象,它实际上是istream_withassign类的一个对象。
阅读全文
摘要:最初设计流的目的是用于文本,因此默认的输出模式就是文本方式。在以文本模式输出时,若遇到换行符(十进制10)便自动被扩充为回车换行符(十进制13和10)。这种自动扩充有时可能出问题,请看下列程序: #include<fstream>using namespace std;int iarray[2] =
阅读全文
摘要:输出流成员函数有三种类型: 与操作符等价的成员函数; 执行非格式化写操作的成员函数 其他修改流状态且不同于操作符或插入运算符的成员函数 对于顺序的格式化输出,可以仅使用插入运算符和操作符。对于随机访问二进制磁盘输出,使用其他成员函数,使用或不使用插入运算符。 1、输出流的open函数 2、输出流的c
阅读全文
摘要:就像C语言一样,c++语言中也没有输入/输出语句。但c++编译系统带有一个面向对象的输入/输出软件包,它就是I/O流类库。 1、I/O流的概念及流类库结构 I/O流类库是C语言中I/O函数在面向对象的程序设计方法中的一个替换产品。 当程序与外界环境进行信息交换时,存在着两个对象,一个是程序中的对象,
阅读全文
摘要:1、函数对象 函数对象是STL提供的第四类主要组件,它使得STL的应用更加灵活方便,从而增强了算法的通用性。大多数STL算法可以用一个函数对象作为参数。所谓“函数对象”其实就是一个行为类似函数的对象,它可以不需要参数,也可以带有若干参数,其功能是获取一个值,或者改变操作的状态。 在c++程序设计中,
阅读全文
摘要:标准c++算法是通过迭代器和模板来实现的,其实算法本身就是一种函数模板。 算法从迭代器那里获得一个元素,而迭代器则知道一个元素在容器中的什么位置。迭代器查找元素的位置并将这些信息提供给算法以便算法能够访问这些元素。算法不必关心具体的元素存储在容器中什么位置的细节,通常情况下,算法也不必直到存储元素的
阅读全文
摘要:理解迭代器对于理解STL框架并掌握STL的使用至关重要。简单地说,迭代器是面向对象版本的指针,STL算法利用迭代器对存储在容器中的元素序列进行遍历,迭代器提供了访问容器和序列中每个元素的方法。 虽然指针也是一种迭代器,但迭代器却不仅仅是指针。指针可以指向内存中的一个地址,通过这个地址就可以访问相应的
阅读全文
摘要:容器适配器是用来扩展7中基本容器的,是修改和调整其他类接口的类。他们不提供存放数据的实际数据结构的实现方法,而且容器适配器也不支持迭代器。 1、标准栈容器 使用STL中的标准栈为程序员提供了一层附加的保护,下溢和上溢的情况在发生之间就会被捕获。 标准栈容器是使用适配器与一种基础容器相结合来实现的。使
阅读全文
摘要:列表容器主要用于存放链表,其中的链表是双向链表,可以从任意一端开始遍历。列表容器是需要按顺序访问的容器。另外,列表容器不支持随机访问迭代器,因此某些算法不能适合于列表容器。列表容器还提供了另一种操作 拼接(splicing),其作用是将一个序列中的元素插入到另一个序列中。其头文件为<list> 1、
阅读全文
摘要:双端队列容器是一种放松了访问权限的队列。除了从队列的首部和尾部访问元素外,标准的双端队列也支持通过使用下标操作符"[]"进行直接访问。 它提供了直接访问和顺序访问方法。其头文件为<deque>。 1)双端队列容器的构造函数 有4中形式的构造函数: deque();//构造size()为0的双端队列容
阅读全文
摘要:向量容器属于顺序容器,用于容纳不定长线性序列(即线性群体),提供对序列的快速随机访问(也称直接访问)。这一点与c++语言支持的基本数组类型相同,但基本数据类型不是面向对象的。而面向对象的向量是动态结构,他的大小不固定,可以在程序运行时增加或减少。 向量容器可以用来实现队列、栈、列表和其他更加复杂的结
阅读全文
摘要:顺序容器类以逻辑线性排列方式存储元素,在这些容器类型中的元素在逻辑上被认为是连续的存储空间中存储的。顺序容器可用于存储线性群体。 在关联容器类中,元素的存储和检索基于关键字和元素与其他元素之间的关系,与顺序容器类的元素存储和检索方式完全不同。 对顺序容器的访问分为顺序或直接(也称随机)两种。 容器类
阅读全文
摘要:有效地利用已有的成果,将经典的、优秀的算法标准化、模块化,从而提高软件的生产率,是软件产业化的需求,为了实现这一需求,不仅需要面向对象设计思想,而且需要泛型程序设计思想。 c++语言提供的标准模板库(standard template library,STL)便是对象对象程序设计和泛型程序设计(Ge
阅读全文
摘要:同样可以用数组或链表来存储队列中的元素。由于队列操作不同于一般线性群体操作的特殊性,需要专门涉及队列类。 队列也有三种基本状态:一般状态、对空、队满。 无论采用那种数据结构,队列类的数据成员都应该包括:队列元素、队头指针、队尾指针。 队列类中函数成员应该能够实现下列基本操作:初始化、入队、出队、清空
阅读全文
摘要:栈是一种线性群体,因此栈的数据可以用数组或链表来存储。 由于栈的访问特性,故直接用数组类和链表类来解决栈的问题是不合适的,而是需要专门设计栈类。 要完整地保存栈的信息,栈类的数据成员至少应该包括栈元素和栈顶指针。由于栈元素即可以用数组也可以用链表来存放,栈类的结构也就有了两种:基于数组和基于链表。基
阅读全文
摘要:链表是一种动态数据结构,可以用来表示顺序访问的线性群体。 链表的第一个结点称为头结点,最后一个结点称为尾结点,尾结点的后继指针为空(NULL)。 1、结点类 链表的结点包括数据和指针域,是链表的基本构件。结点的数据域用于存放群体中元素的内容。即可以是若干个基本类型的数据,也可以是自定义类型的数据,甚
阅读全文
摘要:ROS客户端提供一些列库文件用于用户开发。它利用许多ROS概念并使它通过代码可以获取。 下面是ROS程序中的接口 ROSCPP客户端(c++客户端) 首先新建一个包 然后catkin_make一下 在新建的包目录下,建立一个消息文件msg 上面定义的消息需要生成消息的头文件foo.h以便以后我们可以
阅读全文
摘要:1、launch 参数说明: pkg为节点的功能包,type为需要运行的那个节点,name为节点的名字,后面的参数可选 举个launch文件的例子: 在工作空间中新建一个包: 然后再回到工作空间中去编译: 再在包目录下创建一个launch文件: 把type=turtlesim_teleop_key改
阅读全文
摘要:1、线性群体的概念 线性群体中的元素次序与其位置关系是对应的。在线性群体中,又可按照访问元素的不同方法分为直接访问、顺序访问和索引访问。 对可直接访问的线性群体,我们可以直接访问群体中的任何一个元素,而不必首先访问该元素之前的元素。 对顺序访问的线性群体,只能按元素的排列顺序从头开始依次访问各个元素
阅读全文
摘要:1、订阅者程序 我们继续使用 turtlesim 作为测试平台,订阅 turtlesim_node发布的/turtle1/pose 话题。 这一话题的消息描述了海龟的位姿 (位置和朝向) 。尽管目前你已经对这一程序的某些部分感到熟悉了,但这里还是有三个新的知识点。 编写回调函数 发布和订阅消息的一个
阅读全文
摘要:1、发布者程序 在本节中,我们将看到如何发送随机生成的速度指令到一个turtlesim海龟,使它漫无目的地巡游。这个程序的源文件称为pubvel,这个程序展示了从代码中发布消息涉及的所有要素。 其代码如下: pubvel和hello程序主要的区别都是由于发布消息的需求导致的。 包含消息类型声明 每一
阅读全文
摘要:1、创建工作区和功能包 在我们写任何程序之前,第一步是创建一个容纳我们的功能包的工作区,然后再创建功能包本身。 创建工作区 使用标准的mkdir命令行去创建一个目录,我们将把这个新的目录称作工作区目录。 创建工作区还需要最后一步,即在工作区目录中创建一个叫做src的子目录,该子目录用于存放功能包的源
阅读全文
摘要:一、安装 二、配置账户 不管是安装ROS还是使用一台预装了ROS的电脑,要想在你的账户中使用ROS,就必须完成下面步骤: a、为用户账户中设置rosdep,首先在账户中初始化rosdep系统,命令如下: rosdep update 该命令将在你的根目录下保存一些文件,文件夹名为.ros,这条命令只需
阅读全文
摘要:1、目标 • 学会把滑动条绑定到 OpenCV 的窗口• 你将会学习这些函数: cv2.getTrackbarPos(), cv2.creatTrackbar()等。 2、代码示例 结合上一节的知识,创建一个画板,可以自选各种颜色的画笔绘画各种图形。 import cv2import numpy a
阅读全文
摘要:1、目标 • 学习使用 OpenCV 处理鼠标事件• 你将要学习的函数是:cv2.setMouseCallback() 2、简单演示 这里我们来创建一个简单的程序,他会在图片上你双击过的位置绘制一个圆圈。 首先我们来创建一个鼠标事件回调函数,当鼠标事件发生时它就会被执行。 鼠标事件可以是鼠标上的任何
阅读全文
摘要:1、目标 a、学习使用 OpenCV 绘制不同几何图形 b、 你将会学习到这些函数: cv2.line(), cv2.circle(), cv2.rectangle(),cv2.ellipse(),cv2.putText() 等。 2、代码 上面所有的这些绘图函数需要设置下面这些参数: img:你想
阅读全文
摘要:1、目标 a、学会读取视频文件,显示视频,保存视频文件; b、学会从摄像头获取并显示视频 c、你将会学习到这些函数:cv2.VideoCapture(),cv2.VideoWrite() 2、用摄像头捕获视频 cap.read() 返回一个布尔值(True/False) 。如果帧读取的是正确的,就是
阅读全文
摘要:1、目标 a、在这里将会学到怎样读取一副图像,怎样显示幅图像,以及如何保存一副图像 b、要学习的函数如下: cv2.imread(),cv2.imshow(),cv2.imwrite() c、还可以使用Matplotlib显示一幅图片 2、读入一幅图像 警告:就算图像的路径是错的,OpenCV 也不
阅读全文
摘要:#include <iostream>#include <opencv2/opencv.hpp>using namespace cv;using namespace std;int main(){ Mat img = imread("D:\\FOR_SLAM\\lena.jpg"); if (img
阅读全文
摘要:转载:http://www.cnblogs.com/dsky/archive/2012/06/04/2535397.html 1、IDLE是Python软件包自带的一个集成开发环境,初学者可以利用它方便地创建、运行、测试和调试Python程序。 一、IDLE的安装 实际上,IDLE是跟Python一
阅读全文
摘要:Goals In this tutorial We will learn to setup OpenCV-Python in your Windows system. Below steps are tested in a Windows 7-64 bit machine with Visual S
阅读全文
摘要:回顾 Mat 行 列 通道 维度 row col channel dim 在opencv里面的维度一定是大于等于2的,比如上面的一个行向量就是一个1*7的“二维向量”。 在Mat里面除了上面四个比较常用的量以外,还有flag变量,它是在Mat 的头里面,包含了图像的维度,深度(是short类型、ch
阅读全文
摘要:转载:http://blog.csdn.net/a934270082/article/details/50843266?locationNum=3&fps=1 1. 配置系统环境变量:计算机 > 属性 > 高级系统设置 > 环境变量 (1) 首先创建OpenCV的环境变量, 变量名:OPENCV,
阅读全文
摘要:基本数据类型是c++编译系统预定义的,而自定义类型的数据是由多个基本类型或自定义类型的元素组成的,我们称之为群体数据。 对于群体数据,仅有系统预定义的操作是不够的,在很多情况下,还需要设计与某些具体问题相关的特殊操作,并按照面向对象的方法将数据与操作封装起来,这就是群体类。 群体可以分为两种:线性群
阅读全文
摘要:大纲 1、图像处理基础 2、图像的特征提取 3、机器视觉中的几何学 1)坐标变换与视觉测量 2)3D计算机视觉 4、机器视觉中的机器学习方法与数据处理 1)图像识别 2)图像搜索 推荐书:计算机视觉 算法与应用。 Fundamental of Computer Vision(计算机视觉基础) 1、什
阅读全文
摘要:深度学习几大工具:Theano(基于python),Torch,Caffe(用c++写的),Tensor flow,CNTK;caffe是比较流行的深度学习的框架 caffe特点:特别适合于新手,由于其简单,不用写代码只需写一些配置文件就可以完成神经网络的训练等。
阅读全文
摘要:1、引言 移动机器人在月球和火星等外星球表面导航时,将面临复杂的位置环境。未知环境中的移动机器人自主导航控制技术已成为空间探测机器人的一项关键技术。 在未知环境中的导航控制中的一些问题,包括环境建模、定位、导航控制器的学习及优化、故障诊断、在线运动规划与控制等。 在未知环境中的移动机器人只具有较少的
阅读全文
摘要:抽象类是一种特殊的类,它为一个类族提供统一的操作界面。抽象类是为了抽象和设计的目的而建立的,可以说,建立抽象类,就是为了通过它多态地使用其中的成员函数。抽象类处于类层次的上层,一个抽象类自身无法实例化,也就是说我们无法定义一个抽象类的对象,只能通过继承机制,生成抽象类的非抽象派生类,然后再实例化。
阅读全文
摘要:虚函数是动态绑定的基础。虚函数必须是非静态的成员函数,虚函数经过派生之后,在类族中就可以实现运行过程中的多态。 根据类型兼容规则,可以使用派生类的对象代替基类对象。如果用基类类型的指针指向派生类对象,就可以通过这个指针来访问该对象,问题是访问到的只是从基类继承来的同名成员。解决这一问题的办法是:如果
阅读全文
摘要:1、ROS框架 分为以下三个级别: 1)文件系统级 2)计算图级 计算图级是ROS处理数据的一种点对点的网络形式,描述程序是如何运行的。 基本的计算图级概念包括:节点,参数服务器,消息,服务,主题和包等 节点:node,一个节点即为一个可执行文件,它可以通过ROS与其他节点进行通信; 参数服务器:p
阅读全文
摘要:- 1、什么是ROS ROS起源于2007年,斯坦福大学的人工智能实验室与机器人技术公司Willow Garage针对其个人机器人项目开发了ROS的雏形。 ROS大致每年发布一个版本,目前正在维护的ROS版本包括indigo,jade,kinetic,一些早期版本现在已经停止维护。ROS依赖于lin
阅读全文
摘要:1、c++中预定义的运算符的操作对象只能是基本数据类型,实际上,对于很多用户自定义类型(如类),也需要有类似的运算操作。例如,下面的程序段定义了一个复数类: class complex { public: complex(double r=0.0,double i=0.0){real=r;imag=
阅读全文
摘要:面向对象程序设计的真正力量不仅仅在于继承,而在于将派生类对象当基类对象一样处理的能力。支持这种能力的机制称为多态和动态绑定。 1、多态是指同样的消息被不同类型的对象接收时导致不同的行为,所谓消息是指对类的成员函数的调用,不同的行为是指不同的实现,也就是调用了不同的函数。 2、多态类型 面向对象的多态
阅读全文
摘要:当某类的部分或全部直接基类是从另一个共同基类派生而来时,在这些直接基类中从上一级共同基类继承来的成员就拥有相同的名称。在派生类的对象中,这些同名数据成员在内存中同时拥有多个拷贝,同一个函数名会有多个映射。我们可以使用作用域分辨符来惟一标识并分别访问他们,也可以将共同基类设置为虚基类,这时从不同的路径
阅读全文
摘要:跟着博主http://blog.csdn.net/heyijia0327/article/details/40899819一起学习 尽管利用高斯逼近能有效解决许多滤波问题,但当滤波分布为多模型或某些状态为离散时,高斯逼近将不再适用。在这种情况下,可选择基于序贯重要性重采样的粒子滤波,该方法通过蒙特卡
阅读全文