- 博客(26)
- 收藏
- 关注
转载 特征向量与特征值(做图像处理项目时所查)
转自http://www.cnblogs.com/isabelincoln/archive/2009/06/18/1504623.html特征向量与特征值在看线性代数这一部分的时候,真是一头雾水。虽然明白了特征值和特征向量的求法,但总觉得没有用。在《理解矩阵》一文中,虽然提到了这与矩阵的本质有关,但并未详细提及,但我知道了一定具有一定的几何意义。后来,查看了《特征向量的
2016-08-15 15:23:15
3136
原创 列表初始化返回值,函数的尾置返回类型
c++11规定,函数可以返回花括号包围值的列表例如:vector process(){return{"a","b","c"};}c++11规定了一种新的函数定义申明的方式(trailing retern type)trail:有尾部的意思例如auto func(int i)->int(*)[10]
2016-08-12 16:51:56
739
原创 标准库initializer_list类
initialize :初始化和vector一样,initializer_list也是一种模板类型。但和vector不同的是initializer_list对象中的元素永远是const。具体的操作includeinitializer_list lst 定义一个initializer_list,进行默认初始化initializer_list lst{a,b,c}
2016-08-12 16:33:32
900
原创 数组作为形参
数组的两个特性:数组不能被拷贝;数组名会被转换成指针;以下3中print()函数是等价的,编译器处理对函数的调用时只检查传入的参数是不是const int *;void print(const int *);void print(const int [ ]);//对编译器来说是一样的,这里主要是为了告诉使用者,函数的意图的作用于一个数组;void print(con
2016-07-21 17:23:56
1023
原创 一个关于const的初始化规则
例如:const int a=5;int b=a;// 正确const int * const p=&a;int * p1= p;//错误其实很好理解,初始化时只要不存在改变const常量的隐患的都是正确的初始化。用比较形式化的话说就是初始化时不能忽略底层const,我们可以用一个非常量来初始化一个被底层const修饰的对象,反过来则不对。
2016-07-21 16:49:05
437
原创 分离式编译的概念
我们在写大型程序的时候,肯定希望把不同功能的代码放在不同的文件中。比如我们可以把一个函数或者一个类单独放在一个文件中。这个时候编译器就需要分离式编译这些文件,最后形成可执行文件。文件为编译器的编译单元,编译器先把这些文件单独编译产生一些后缀名为.obj(windows)或.o(uinx)的文件。后缀的名字含义是object code(对象代码)。然后编译器在把这些对象文件连接在一起形成
2016-07-21 15:56:38
392
原创 标准库begin和end;除法的舍入规则;sizeof用于类成员;
标准库的begin和end这两个标准库函数可以用来获得数组的头指针和尾后指针。除法的舍入规则c++11规定除法都是向0取整。(即直接删除小数部分)sizeof用于类成员sizeof有两种形式sizeof(type)sizeof expr例如:double a=10.0;sizeof(double);sizeof a;通常情况下只
2016-07-21 09:43:02
298
原创 类内初始化,范围for语句,vector的vector,容器的cbegin和cend
类内初始化在c++11新标准里,我们可以为类的数据成员提供一个类内初始值。这就是所谓的in—class。当创建对象时,用类初始化值初始化对应的数据成员。需要注意的是,规定不能用()对类内数据成员初始化。范围for语句for(declaration:expression)statementvector的vector以前:vector > a// 必须有空
2016-07-20 09:59:06
556
原创 图像配准的研究
最近在做遥感配准的任务。对图像配准研究了一下。图像配准就是一幅图到另一幅图的几何变换和灰度变换。因为做的是遥感图像的配准,所以采用的是基于点特征的匹配。基于点特征的配准有如下4个步骤:1,特征察觉(检测)。2,特征点描述。3,特征点匹配。4,变换模型求解。因为是项目,实用为主,所有采用比较成熟的SIFT算法。1,2步骤公式居多,复习的时候自己看资料就行。
2016-07-19 09:06:45
3595
原创 解决驱动器中没有磁盘的问题
今天打算用codeblock调试一个程序,结果弹出一个gdb.exe的弹窗。说是没有磁盘。百度了好长时间,结果都没啥办法。算了,挂个vpn访问了下谷歌。终于找到解决办法,找到的办法还是在百度经验中,真是讽刺。附上网址http://jingyan.baidu.com/article/0aa22375bd87bc88cc0d64e1.html
2016-07-05 16:17:44
3496
原创 vector,迭代器,数组
vector#includeusing std::vector;初始化;常用的操作:v.empty();v.size(); 返回的也是配套的size_type类型。v.push_back(t);在尾端添加一个值为t的元素。注意的是,不能用下标运算添加元素。如果在循环体里有添加vector元素的语句,则不能使用范围for语句。v[ n];下标运算符。v1
2016-07-04 16:21:05
1011
原创 安装opencv库
因为项目需求需要做图像处理,所以安装了opencv库,安装过程可谓是麻烦不断,这个简述一下,防止遗忘。首先去官网下载了最新的opencv for windows。我选择安装在c盘。打开opencv文件夹看到两个子文件夹。一个是build(里面有头文件include和一些用不同编译器编译好的文件,现在有java,python,vc11,vc12,如果你用的是这些编译环境就可以直接用就行。
2016-07-01 14:47:57
1062
原创 标准库类型string
头文件 #include命名空间:std初始化:需要注意的是 string s(10,‘c’);//s是由10个c组成的串。 string(10)是错误的,这和vector有点区别;string对象上的操作读写osis>>sgetline(is,s)这里要注意的是缓冲的存在,还要注意的是>>读之后,换行符还在缓冲区。getline读一行后,换行符被丢弃。
2016-06-28 11:06:35
373
原创 类型别名 和 decltype
有两种方法可以用于定义类型别名。传统的方法是使用关键字typedef,例如typedef double dou;//dou是double的别名typedef dou *p;//p是double * 的别名c++11定义了另外一种方法,使用
2016-06-27 10:14:49
253
原创 nullptr,constexpr和constexpr函数
生成空指针的方法有int *p1=nullptr; //c++11新标准,推荐使用int *p2=0; // 注意不能把一个变量赋值给指针,即使变量的值为0也不行。int *p3=NULL;// NULL是预处理变量,需要包含一个头文件。根据尽量用编译器代替预处理器的原则,应该避免使用这种方法。首先明确一下常量表达式的定义(const expression
2016-06-24 15:45:20
843
原创 auto类型说明符
当我们不知道某个表达式的值的类型,但是需要用一个变量来存储这个值得时候,就用到auto类型说明符。auto让编译器通过初始化的值来推算变量的类型。所以用auto定义变量时必须有初始值。例如 auto a =10;//定义了一个整形变量aauto的使用有以下需要注意的点:当常量作为初始值的时候,auto一般忽略掉const(顶层const)。例如:const int a
2016-06-24 15:08:23
458
原创 关于缓存和流
#include #includeusing namespace std;int main(){ cout << "Hello world!" << endl; string word; while(cin>>word) { cout<<word<<endl; } return 0;}遇到这个小代码的时候,还没有想到缓
2016-06-23 09:25:30
226
原创 关于在头文件里定义变量的探讨
之前提到一个网上的问题,关于在头文件里定义变量。最近想尝试一下,结果是令人困惑的。其实吧,在头文件里定义变量这个事情其实是无一利而百害的,估计搞编译器的人也不会特别的研究怎么让人舒服的在头文件里定义个全局变量。谈谈实验结果:我想在一个头文件里定义一个全局变量,我想在不管任何cpp里使用它(已经把头文件包含进去),结果是令人沮丧的。编译不通过,无法识别变量名。除非我在相应的cpp里用ex
2016-06-21 22:23:14
544
转载 C++命名空间
梗概:1.作用域的概念划分;2. 命名空间:实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。如: namespace ns1 //指定命名中间nsl { int a; double b; } namespace 是定义命名
2016-06-17 21:37:35
235
原创 当别人和你交谈时
有些时候,当朋友对我们诉说一些事情的时候,我们往往根据自己对这个话题的感受和看法发表自己的看法。这个时候往往别这个话题所限制住。这时和朋友的谈话的结局不确定性很大,要么相谈甚欢,要么尴尬而止,要不就是面红耳赤。有时候朋友找你抱怨一些事情,发展的方向可能往往是相互攀比谁更值得抱怨。朋友,家庭,爱人,各种人际关系,想要在其中安全的存活,就要时刻为别人想想。别人找你交谈时,我们需要有一个意识:他需要
2016-06-15 09:52:57
226
原创 局部变量加上static之后依然是局部变量
#includeint count_calls(){ static int a = 0 ; return ++a;}int main(){ for(int i=0;i<10;i++) { static int b=0; b++; std::cout << count_calls()<<" "<<b<<std
2016-06-13 22:47:30
647
原创 默认初始化
虽然保险的做法是对每个变量都显示初始化,但是了解一下默认初始化的规则也是很有必要的。1.定义于任何函数体之外的变量被初始化为0。2.定义在函数体内部的局部变量不会被默认初始化。所以,它的值是未定义的(这里的“未定义”我的理解:变量所分配内存中的二进制数据,分配时是什么就是什么,机器会按照变量的类型来解读这串二进制数据)。3.对于局部静态对象(在函数体内加了前缀static)如果没有显示
2016-06-12 16:38:14
342
原创 声明和定义,文件保护符,extern
声明和定义以前关注的不够,导致文件保护符和extern理解不上去。这里先整理一下。知识点:(变量可以被声明很多次,但是只能定义一次)所以我们就很有必要知道哪些是定义式哪些是声明式声明式:extern int x;//对象声明式int num(int number);//函数声明式class Widget;//类声明式templateclass Graph;//
2016-06-11 18:36:27
512
原创 long long ,列表初始化
1.long long类型 64位8字节2.列表初始化,作为c++11新标准的一部分,用{}(花括号)来初始化变量得到了全面的应用。现在,无论是初始化对象还是某些时候为对象赋新值(用于赋值?没查,不确定),都可以使用这样一组由花括号括起来的初始值。int a=0;int a={0};int a(0);int a{0};vector v1{"a","an","the"};vector
2016-06-11 17:52:48
2641
原创 条款02:尽量以const ,enum,inline 替换 #define
这个题目的意思深了讲就是尽量用编译器代替预处理器。当然有些功能是暂时无法取代的,比如说#include,#ifdef/#ifndef。(最后提一下,先讲条款)思路是这样的用const(常量)来替换#define的好处有1.例如 #define A 1.666#define的记号名称可能不会进入记号表(symbol table)内,所以当由于此常量导致编译错误的时
2016-06-10 21:15:33
350
原创 条款01:视c++为一个联邦语言
以前学C++一直模模糊糊,就像近处看山一样,不见其整体脉络。条款01给出了C++的一个框架,把它分为4个次语言。C,Object-Oriented C++(C with class 类的所有东西),Template C++,STL。学东西没有框架,总会觉得脑袋迷糊。核心:(对这理解不深,先放一放)C++ 高效编程守则视状况而变化,取决于你使用C++的那一部分。
2016-06-07 17:03:58
275
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人