
study_C++
文章平均质量分 57
chezhai
不想说
展开
-
list in STL of C++
在C++中采用了大量的标志模板库(STL)实现程序的设计,这种设计方式使得不同类型的对象都能通用,而不再是C语言中的通常对于不同的类型需要重新设计或者或者比较采用间接的指针操作。C++中的这种方式简化了写代码的复杂度,但是增加了编译器的复杂度和难度。在数据结构中链表是比较基本的类型,在C++中链表是基于模板的类,因此在实际的使用过程中需要涉及到实际的类型。 点击(此处)折叠或打开includeli转载 2016-10-22 15:59:52 · 451 阅读 · 0 评论 -
linked list
链表概述 链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据,二为下一个结点的地址。因此,head指向第一个元素:第一个元素又指向第二个元素;……,直到最后一个元素,该元素不再指向其它元素,它转载 2016-10-22 16:01:40 · 255 阅读 · 0 评论 -
friend function in C++
友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类。友元函数的特点是能够访问类中的私有成员的非成员函数。友元函数从语法上看,它与普通函数一样,即在定义上和调用上与普通函数一样. 友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend。我们已知道类具有封装和信息隐转载 2016-10-22 16:03:43 · 1493 阅读 · 0 评论 -
setup OpenCV:OpenCV 3.1.0 +VS2015
一、准备工作a、vs2015环境b、从http://opencv.org/downloads.html下载opencv3.1.0二、开始安装a、双击得到如下配置安装路径:b、设置一个路径,点击extract开始安装:三、配置环境变量上述步骤完成之后,需要配置电脑的环境变量:电脑-》属性-》高级系统设置:点击高级系统设置之后如下:单击环境变量:对系统变量 path 添加: D:\opencv3.转载 2016-10-22 19:05:18 · 452 阅读 · 0 评论 -
fprintf function and stderr
除了人工的分析之外,最简单最直接的调试方法要算 printf 了。不过,我们这里推荐使 用的并不是初学 C 语言时使用的函数 int printf(const char *format, …),而是稍微复杂一点的 fprintf()函数,因为它更方便我们之后重定向错误输出信息到指定的设备。fprintf()函数的原 型如下: int fprintf(FILE *stream, const char转载 2016-11-03 16:45:46 · 301 阅读 · 0 评论 -
try_catch
一、简单的例子 首先通过一个简单的例子来熟悉C++ 的 try/catch/throw: 1 #includeinclude Destruct Test不过一般来说我们可能更习惯于把会产生异常的语句和要throw的异常类分成不同的类来写,下面的代码可以是我们更愿意书写的: class ExceptionClass { public: ExceptionClass(const转载 2016-11-03 16:59:44 · 220 阅读 · 0 评论 -
QT5.7 + VS2015
一、下载与安装: 这里面有两个文件需要下载,一个是QT 5.7.0的安装文件,另外一个是QT搭在vs2015上的插件文件,也是必要文件。如果vs版本是200X的话可以直接在QT 5.7.0的下载页面最下面的Other downloads找到相应插件。 QT 5.7.0: https://www.qt.io/download-open-source/#section-2 (在Windows Ho转载 2016-10-23 19:37:22 · 3691 阅读 · 0 评论 -
destructor_learning
析构函数在下边3种情况时被调用: 1.对象生命周期结束,被销毁时; 2.delete指向对象的指针时,或delete指向对象的基类类型指针,而其基类虚构函数是虚函数时; 3.对象i是对象o的成员,o的析构函数被调用时,对象i的析构函数也被调用。情况1请看下边代码:#include<iostream>class A{ public: A() { cout<<"constructin转载 2016-11-04 20:09:05 · 265 阅读 · 0 评论 -
new_learning
一.new的用法:new() 分配这种类型的一个大小的内存空间,并以括号中的值来初始化这个变量;new[] 分配这种类型的n个大小的内存空间,并用默认构造函数来初始化这些变量;例子:#includeusing namespace std;int main(){char * p=new char("Hello");//error分配一个char(1字节)的空间,//用"Hello"来初始化,这转载 2016-11-04 20:14:30 · 301 阅读 · 0 评论 -
the difference of heap and stack
堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态转载 2016-11-05 14:45:02 · 296 阅读 · 0 评论 -
throw_try_catch
异常处理的基本思想是简化程序的错误代码,为程序键壮性提供一个标准检测机制。也许我们已经使用过异常,但是你会是一种习惯吗,不要老是想着当我打开一个文件的时候才用异常判断一下,我知道对你来说你喜欢用return value或者是print error message来做,你想过这样做会导致Memory Leak,系统退出,代码重复/难读,垃圾一堆…..吗?现在的软件已经是n*365*24小时的转载 2016-11-04 20:34:25 · 403 阅读 · 0 评论 -
data function, c_str() and strcpy_s()
标准库的string类提供了3个成员函数来从一个string得到c类型的字符数组:c_str()、data()、copy(p,n)。1. c_str():生成一个const char*指针,指向以空字符终止的数组。注:①这个数组的数据是临时的,当有一个改变这些数据的成员函数被调用后,其中的数据就会失效。因此要么现用先转换,要么把它的数据复制到用户自己可以管理的内存中。注意。看下例:转载 2016-11-05 17:47:37 · 365 阅读 · 0 评论 -
CV_Assert()
CV_Assert()作用:CV_Assert()若括号中的表达式值为false,则返回一个错误信息。ssert 宏的原型定义在中, 其作用是如果它的条件返回错误, 则终止程序 执行,原型定义:#include void assert( int expression );assert 的作用是现计算表达式 expression ,如果其值为假(即为 0),那么它先向 stde转载 2016-11-05 20:26:16 · 1476 阅读 · 0 评论 -
data,the member of Mat
OpenCV 自2.x版本以来,处理图像的主要数据结构从CvMat变成了Mat,下面是OpenCV官方文档对Mat的描述:[cpp] view plain copyclass CV_EXPORTS Mat { public: // ... a lot of methods ... ... /*! includes转载 2016-11-07 18:04:33 · 278 阅读 · 0 评论 -
uninstall_VS2015 to change the installing path
1、以管理员身份运行cmd 2、将iso文件与exe文件放在一块儿如图: 在cmd上面输入:D:\vs_enterprise.exe /uninstall /force(建议直接复制粘贴),主要是看看你自己的文件放在哪个盘里还有看看VS是什么版本。 3、之后坐等结果然后安装就可以选择安装路径了原创 2016-10-27 09:44:51 · 247 阅读 · 0 评论 -
reading the path of picture
1、默认的话是工作路径,如新建了一个cvtest项目,这个项目文件(名为cvtest)里面一般有cvtest、Debug、Release三个文件夹,工作路径就是这个cvtest文件夹,默认读取的是这个文件夹下的图片,如:imread(“dota.jpg”);2、想指定读取路径的话,用这个语句:imread(“E:\VisualStudioProjects\PICS\dota.jpg”);读取的是PI转载 2016-10-27 16:58:07 · 317 阅读 · 0 评论 -
saturate_cast
在OpenCV学习中经常看见saturate_cast的使用,下面的代码会展示它的作用,详细的代码可以参见文章http://blog.youkuaiyun.com/mjlsuccess/article/details/12400787[cpp] view plain copy//使用图像混合例子中的C语言版本演示 for (int i=0; i转载 2016-11-08 18:46:48 · 600 阅读 · 0 评论 -
apostophe
example: for label = 1:classNum for k = 1:attr_number PXk = -log(sigma(k,label))… - (X(k,1)-mu(k,label))^2 / (2*sigma(k,label)^2); prob(1,label) = p转载 2016-10-19 09:59:20 · 265 阅读 · 0 评论 -
debug compare with release
Debug和Release区别VC下Debug和Release区别最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步定位到问题所在处,才发现原来是给定的一个数组未初始化,导致后面处理异常。网上查找了些资料,在这 罗列汇总下,做为备忘~ 一、Debug 和 Release 的区别转载 2016-10-28 21:56:57 · 303 阅读 · 0 评论 -
QT5.7 deploys opencv2.4.13(the version of opencv is not newer than QT)
Ubuntu下搭建opencv开发环境: http://blog.youkuaiyun.com/scien2011/article/details/52539325 安装适用于python3的opencv: http://blog.youkuaiyun.com/scien2011/article/details/52539644前言 opencv是一个跨平台计算机视觉库,使用前需要把它编译成二进制的静态库和动转载 2016-10-29 15:57:35 · 594 阅读 · 0 评论 -
data, size, elemSize, step, depth in Mat class
data: uchar类型的指针,指向Mat数据矩阵的首地址。可以理解为标示一个房屋的门牌号;dims: Mat矩阵的维度,若Mat是一个二维矩阵,则dims=2,三维则dims=3,大多数情况下处理的都是二维矩阵,是一 个平面上的矩阵。 可以理解为房屋是一个一层的平房,三维或更多维的则是转载 2016-11-07 19:40:40 · 328 阅读 · 0 评论 -
size()\pyrDown\pyrUp
OpenCV改变图像大小的操作有两类:resize与图像金字塔,但是这两类操作差别还是比较大的。一、resize函数原型void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )各个参数的意义比较转载 2016-11-12 16:36:55 · 471 阅读 · 0 评论 -
drawing some geometric figure
1.Circle绘制圆形。void cvCircle( CvArr* img, CvPoint center, int radius, CvScalar color, int thickness=1, int line_type=8, int shift=0 );img图像。center圆心坐标。radius圆形的半径。color线条的颜转载 2016-11-13 13:46:16 · 384 阅读 · 0 评论 -
static function and variable
在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。静态成员的定义或声明要加个关键static。静态成员可以通过双冒号来使用即::。 在C++中类的静态成员变量和静态成员函数是个容易出错的地方,本文先通过几个例子来总结静态成员变量和转载 2016-11-29 19:20:54 · 479 阅读 · 0 评论 -
static variable/function
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不转载 2016-11-17 14:12:29 · 300 阅读 · 0 评论 -
two arguments of main function
main函数中两个参数的用法MSDN6.0中写道:argc is An integer specifying how many arguments are passed to the program from the command line. Because the program name is considered an argument, argc is at least 1. 即是第一个转载 2016-11-02 13:10:57 · 286 阅读 · 0 评论 -
image watch
Image Watch(下载)是OpenCV的一款最新工具,它能够即时显示出矩阵的内容,即memory中Mat的信息,方便程序的调试,非常好用。不过目前该插件只支持VS2012,而且不能保存调试信息。 下载地址:点击打开链接 安装方法: 1 从以上网址下载插件,下载后得到一个ImageWatch.vsix。 2.打开VS2012安装目录,VS2012/COMMOM7/IDE/Microsof转载 2016-11-02 15:07:28 · 795 阅读 · 0 评论 -
rng.uniform
opencv中生成随机数的方法,有和MATLAB差不多的randn()也有,但是并没有那么好用,就是不能决定产生随机数的种子是什么,可以是高斯,或者是均匀分布。其实在opencv中,使用rng(随机数产生器),更加合适,当时在stackflow上看到的,然后自己去搜索了一下 RNG 是一个类,首先要产生一个对象,rng_R, next可以取出下一个随机数,uniform函数可以返回指定转载 2016-11-14 20:30:22 · 10916 阅读 · 1 评论 -
using waitKey function
C++: int waitKey(int delay=0)cvWaitKey()函数的功能是不断刷新图像,频率时间为delay,单位为ms。 返回值为当前键盘按键值。所以显示图像时,如果需要在cvShowImage(“xxxx.bmp”,image)后加上while(cvWaitKey(n)==key)为大于等于0的数即可,那么程序将会停在显示函数处,不运行其他代码;直到键盘值为key的响应之后转载 2016-10-27 16:39:38 · 312 阅读 · 0 评论 -
findContours && drawContours
先来看看findContours的声明[cpp] view plain copyprint?findContours( InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode,转载 2016-12-11 18:37:48 · 2390 阅读 · 0 评论 -
copyMakeBorder
在OpenCV滤波算法中,有两个非常重要的基本工具函数,copyMakeBorder和borderInterpolatecopyMakeBorder函数原型void copyMakeBorder( const Mat& src, Mat& dst,int top, int bottom, int left, int right,int borderTyp转载 2016-11-19 14:01:28 · 27914 阅读 · 0 评论 -
sobel operator
数学推导:Sobel和Roberts算子,这两个算子是梯度算子,是一阶微分算子,可以用来检测图像的边缘。推导过程如下所示,以便以后方便。Sobel算子的推导:Roberts算子的推导:索贝尔算子(Sobel operator)主要用作边缘检测,在技术上,它是一离散性差分算子,用来运算图像亮度函数的灰度之近似值。在图像的任何一点使用此算子,将会产生对应的灰转载 2016-12-02 19:55:55 · 3381 阅读 · 0 评论 -
read\write in C++ from file
C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组fstream提供了三个类,用来实现c++对文件的操作。(文件的创建、读、写)。ifstream -- 从已有的文件读ofstream -- 向文件写内容fstream - 打开文件供读写文件打开模式:ios::in 读ios::out 写ios::app转载 2016-11-21 10:14:36 · 2838 阅读 · 0 评论 -
moment
opencv中的矩主要包括以下几种:空间矩,中心矩和中心归一化矩。class Moments { public: ...... // 空间矩double m00, m10, m01, m20, m11, m02, m30, m21, m12, m03;// 中心矩double mu20, mu11, mu02, mu30, mu21, mu12, mu03;转载 2016-12-12 16:37:19 · 320 阅读 · 0 评论 -
bilateral filter
"Bilateral Filter"一词出自这篇文章当中,作者对其的描述是"smooths images while preserving edges",即在对图像进行平滑滤波的同时又能够保持边缘清晰。这个特点来自于Bilateral Filter的定义,既考虑到了geometric closeness(几何邻近性,即像素点之间的距离),又考虑到了photometric similarity(转载 2016-11-26 17:54:26 · 652 阅读 · 0 评论 -
calcHist
calcHist函数的channels参数和narrays以及dims共同来确定用于计算直方图的图像;首先dims是最终的直方图维数,narrays指出了arrays数组中图像的个数,其中每一幅图像都可以是任意通道的【只要最终dims不超过32即可】如果channels参数为0,则narrays和dims必须相等,否则弹出assert,此时计算直方图的时候取数组中每幅图像的第0通道。当转载 2016-12-08 16:55:43 · 3599 阅读 · 0 评论 -
rfind
string中的find函数与rfind函数定义如下:int find(char c, int pos = 0) const;//从pos开始查找字符c在当前字符串的位置int find(const char *s, int pos = 0) const;//从pos开始查找字符串s在当前串中的位置int find(const char *s, int pos, int n) co转载 2017-03-01 20:05:45 · 2210 阅读 · 0 评论 -
substr
其中 startpos 是起始字符的序号,length 是[从 startpos 开始]取的字符串长度(包括startpos )。如果要取得 str 中序号 m 到 n 之间(不包括n)的子字符串需要用str.substr(m, n-m); #include#includeusing namespace std;main(){st转载 2017-03-01 20:08:33 · 378 阅读 · 0 评论 -
cmake3.7编译VS2015+opencv3.2的第三方库中dnn库(win7系统64位)
由于需要使用opencv3.2的第三方库中dnn库做人脸比对(OpenCV+dnn深度学习框架),而官网下载的opencv中没有dnn模块,故需要用cmake编译opencv,opencv_contrib中源码,得到dnn库。 一、准备工作 我电脑配置有:win7系统,64位,visual studio 2015。 opencv3.2下载:http://opencv.转载 2017-03-04 17:19:48 · 1036 阅读 · 2 评论 -
stringstream
之前在leetcode中进行string和int的转化时使用过istringstream,现在大致总结一下用法和测试用例。介绍:C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。istringstream类用于执行C++风格的串流的输入操作。ostringstream类用于执行C风转载 2017-02-26 20:09:28 · 355 阅读 · 0 评论