- 博客(49)
- 资源 (10)
- 收藏
- 关注
原创 对哈希表及哈希函数的一点理解
原来也听过哈希表,觉得那是比较高级的程序员需要注意的事情,没有注意,但今天看了下,他也不是很高深,也只是一种很平常的数据结构而已。1,先说一下记录: 我们一般都是把记录随机的放在表格中,如:张三,34;李四,23;王五,45; 这样我们去寻找(用计算机寻找,不是用眼睛)时,我们可能寻找王五的次数可能是1-3次都有可能;如果把人数扩大到n,那么会他的时间复杂度也是千变万化,可能你会
2013-05-23 16:11:11 580
转载 vc++External Dependencies
External Dependencies是说你没有把这个文件加入到这个工程中,但是需要这个文件的支持。当然有时是误操作。比如你从工程里面删除了abc.h但是在其中一个文件中用#include包含了这个文件,那么,abc.h就会进入External Dependencies中。.cpp文件比必须加到工程的Source Files中,否则编译link时候总是出错。而加进去就没有问题。
2013-05-21 22:22:23 552
原创 排序
废话不多说,排序:1,排序分类:可以再内存中一次排序完成,叫做内排序;要分批进入(内存太小)叫做外排序; 内排序按所用策略不同又分为5大类:插入,选择,交换,归并和分配排序;其中,插入排序主要包括直接插入排序和希尔排序两种;选择排序主要包括直接选择排序和堆排序;交换排序主要包括气(冒)泡排序和快速排序。 排序又有稳定与不稳定之分:稳定排序:假设在待排序的文件中
2013-05-20 21:15:52 488
原创 二叉树的一些基本概念
二叉搜索树:这颗树要么是空,要么它的左子树的值都必须小于结点的植,右结点的值必须大于根结点 的值;这里的根结点是相对来对的。完全二叉树:若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。前序遍历:根左右;中序遍历:左根右;后序遍历 :左右根。
2013-05-19 19:45:01 450
转载 再次写给我们这些浮躁的程序员
2010年初写过一篇博客(我们是一群和平年代充满浮躁与抱怨的程序员),一年过去了,社会好像更浮躁,也有网友问我这方面的问题,于是有了下面这篇文章,再次写给我们这些刚入行浮躁的程序员,如何成长,以下是列出了一些成长的心得,我们不必每条都去实践,但是优秀的程序员成长过程中总会实践里面的几条。 多做项目,多思考不要害怕做事,刚毕业的同学最缺的就是工作经验,乱七八糟的项目能让你很快就了解了一个公司
2013-05-19 15:24:28 414
转载 void* 和void详解
void的含义void即“无类型”,void*则为“无类型指针”,可以指向任何数据类型。void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:int*pint;void *pvoid;pvoid = pint; /* 不过不能 pint= pvoid; */如果要将pvoid赋给其他类型指针,则需要强制类型转换
2013-05-15 14:08:53 560
原创 C++编程需注意的一些小问题
大家对C++编程应该是驾轻就熟了,但往往也会产生一些误解,下面来总结一下我需要注意的问题,与大家共勉:1,在类中静态成员变量时类锁共有的,避免放置个别对象的数据,且声明静态成员变量时要进行初始化,如果静态成员变量时private,就必须要静态成员函数去访问;2,在构造函数中对成员变量进行初始化的时候,顺序是按声明顺序进行初始化的;3,CObject的析构函数为虚函数的好处是,他的派生类
2013-05-13 20:58:03 601
原创 泛型编程的一些理解
泛型编程,其实只是一种思想,他是想通过一种通用的或者一般的方式来代替所有或者大部分的相似的函数;而STL(标准模板库)是他的实现的实体,也就是他体现了泛型编程,stl里面汇聚了很多老鸟的好的算法,数据结构形成的函数(我还只能理解到函数这个地步),把这些函数加到了C++里,这里是C++在C上的很大改进了;C++实现:STL是跨平台,跨语言的,而C++只是实现STL的一种比较好的形式;最开始S
2013-05-13 20:29:56 665
转载 STL学习小结
转载地址:http://blog.csdn.net/byxdaz/article/details/4633826STL就是Standard Template Library,标准模板库。这可能是一个历史上最令人兴奋的工具的最无聊的术语。从根本上说,STL是一些“容器”的集合,这些“容器”有list, vector,set,map等,STL也是算法和其它一些组件的集合。这里的“容器”和算法的
2013-05-13 20:01:17 582
转载 好的博客地址
http://blog.csdn.net/lcy9819/article/category/675771 数字图像处理与机器视觉http://blog.csdn.net/byxdaz/article/details/4358609 c++/vc++ 老鸟博客http://blog.csdn.net/rongdeguoqian/article/category/1193526
2013-05-11 11:20:37 464
转载 Cvbox2D
之前用到opencv最小外接矩形去表示一个类椭圆形的高度,特此记录备查。对给定的 2D 点集,寻找最小面积的包围矩形,使用函数:CvBox2D cvMinAreaRect2( const CvArr* points, CvMemStorage* storage=NULL ); points 点序列或点集数组 storage 可选的临时存储
2013-05-10 21:51:18 613
原创 opencv画轮廓的外界圆矩形椭圆等
#include #include #include #include using namespace std; #pragma comment(lib,"cv.lib") #pragma comment(lib,"highgui.lib") #pragma comment(lib,"cxcore.lib") in
2013-05-10 21:37:30 1465
转载 OpenCV:CvMemStorage
1、动态内存存储及操作函数 CvMemStorage typedef struct CvMemStorage { struct CvMemBlock* bottom;/* first allocated block */ struct CvMemBlock* top; /* the current memory block - top of the stack */
2013-05-10 19:49:54 586
原创 cvFindContours之2
先看这个opencv的经典例子:#include "cv.h"#include "cxcore.h"#include "highgui.h"#include #endif #pragma comment(lib,"cv.lib") #pragma comment(lib,"highgui.lib") #pragma comment(lib
2013-05-10 14:39:35 648
转载 cvFindContours
提取轮廓在OpenCV里有一个函数 cvFindContours :int cvFindContours( CvArr* image, CvMemStorage* storage, CvSeq** first_contour,int header_size=sizeof(CvContour), int mode=CV_RETR_LIST,int method=CV_CHAIN_APPRO
2013-05-10 14:22:51 1071 2
转载 CFileFind类
1、CFileFind类的声明文件保存在afx.h头文件中。2、该类的实现的功能:执行本地文件的查找(查找某个具体的文件,查找某类文件x*.x*,查找所有文件*.*)3、CFileFind类是CGopherFileFind和CFtpFileFind类的基类。4、CFileFind类的构造函数::CFileFind()和关闭函数::Close()我会成对使用。5、CFileFind类
2013-05-10 10:31:27 585
转载 C/C++中函数参数传递详解
1 // test.cpp : Defines the entry point for the console application. 2 // 3 4 #include "stdafx.h" 5 #include 6 7 using namespace std; 8 9 //值传递template 10 void swap1(T p,T q)11 {12
2013-05-10 10:18:33 730
转载 C++ 传递数组的问题
转自http://blog.csdn.net/tanghw/article/details/6554538http://blog.csdn.net/wdqbupt/article/details/6858676 可以看看学学C++基础本文需要解决C++中关于数组的2个问题:1. 数组作为函数参数,传值还是传址?2. 函数参数中的数组元素个数能否确
2013-05-09 13:53:51 520
转载 VC中捕捉StackOverflow异常
程序中栈溢出通常会导致进程直接关闭。本文分析Windows中栈增长和溢出过程,并提供一种捕捉栈溢出的方法,作为调试程序的参考。栈大小 VC中,栈大小默认为1M,但可以在编译的时候或在创建线程的时候指定其他值。栈增长和溢出 栈底地址在线程生命期内是常量,栈顶地址保存在SP(ESP、RSP)寄存器。栈地址从高向低增长,因此栈增长,对应着SP寄存器减小。 1M空间只
2013-05-08 21:35:04 784
转载 cvFloodFill
#include "stdafx.h"#include "cv.h"#include "highgui.h"#include #include #pragma comment(lib,"cv.lib") #pragma comment(lib,"highgui.lib") #pragma comment(lib,"cxcore.lib")
2013-05-05 21:03:35 750
转载 cvMorphologyEx —不推荐使用
在OpenCV中某些高级形态学变换用cvMorphologyEx函数完成,包括开运算,闭运算,标准形态梯度,白顶帽,黑顶帽运算。但是不推荐使用该函数。 通过查看cvMorphologyEx的源代码,可以发现,在执行开、闭等运算,在进行第二步形态学腐蚀和膨胀时,该函数仍然采用与第一步相同的结构元素进行。这种方法在针对一般对称的结构元素情况是正确的,但是当结构元素为自定义的非对称结构元素时,结果图
2013-05-05 19:51:18 699
原创 腐蚀,膨胀,opencv的形态学处理
对于腐蚀和膨胀,看过很多理论,但是至今还是比较模糊,我的理论是模糊的话,那就不要在头痛了,记住它的用法吧,我确信我不能在这个上面研究出什么新的算法了,会用就行。自己的理解:假设图像A和核元素B,不管B是什么形状,都会有一个参考中心Bo腐蚀:用B在A上移动,B结构下的A最小的亮度值作为Bo对应的像素点的亮度值;膨胀:把“小”字改为“大”字;OPENCv里的函数:cvErode
2013-05-05 19:29:54 1000
转载 cvSmooth()
copy百度文库:函数 cvSmooth 可使用上面任何一种方法平滑图像。每一种方法都有自己的特点以及局限。 没有缩放的图像平滑仅支持单通道图像,并且支持8位到16位的转换(与cvSobel和cvaplace相似)和32位浮点数到32位浮点数的变换格式。 简单模糊和高斯模糊支持 1- 或 3-通道, 8-比特 和 32-比特 浮点图像。这两种方法可以(in-place)方式处理图像
2013-05-05 18:39:10 1000
原创 opencv视频处理整理
opencv 的highgui仓库里可以处理三大部分内容:摄像机等硬件,文件系统,用户界面。这里先整理下常见的摄像头库函数:CVvCapture *cvCreateFileCapture(const char* "文件名"):返回一个CvCapture指针,如果读入成功,返回一个已经初始化的CvCapture指针,失败返回NULL;使用它是要检查返回值是否为空;CVvCapture
2013-05-05 17:15:21 1416
原创 opencv之滑动条详解
还是先看一个例子:在OPENCV里没有按钮,这个可以用滑动条来辅助实现,当然滑动条只取值0-1,如果愿意也可以用鼠标响应事件来代替:当鼠标移动到图像区域时表示1,之外表示0;#include"cv.h"#include"highgui.h"#include#pragma comment(lib,"cv.lib") #pragma comment(lib,"highgu
2013-05-05 16:31:28 1103
原创 opencv鼠标响应事件学习整理
Highgui 细解几个不常用的函数:int cvDestroyAllWindows(void) :关闭所有窗口,并且释放窗口内存空间;int cvStartWindowThread(void):创建一个线程来自动更新窗口及处理窗口触发事件,创建失败,返回值为0;OPENCV 里的鼠标响应事件:1,先举个小例子,然后按照例子里的说明:在一个空图里画矩形,用鼠标画:
2013-05-05 16:07:24 2659
转载 集成性能基元(ipp)
Intel公司有一个产品叫集成性能基元(Integrated Performance Primitives,IPP)库。这个库实际上是一个有着高性能内核的工具箱,它主要用于多媒体处理以及其他计算密集型应用,可发掘处理器架构的计算能力。(其他厂商的处理器也有类似的架构,只不过规模较小。)就像第一章所探讨的,无论从软件层面还是公司内组织层面OpenCV都与IPP有着紧密的联系。最终,OpenC
2013-05-04 21:10:47 1256
转载 数据存储
OpenCV提供了一种机制来序列化(serialize)和去序列化(de-serialize)其各种数据类型,可以从磁盘中按YAML或XML格式读/写。在第4章中,我们将专门介绍存储和调用常见的对象IplImages的函数(cvSaveImage()和cvLoadImage())。此外,第4章将讨论读/写视频的特有函数:可以从文件或者摄影机中读取数据的函数cvGrabFrame()以及写操作函数c
2013-05-04 20:57:32 707
转载 字体和文字
最后一种形式的绘图是绘制文字。当然,文字创建了一套自己的复杂格式,但是,在这类事情上,OpenCV一如既往地更关心提供一个简单的"一招解决问题"的方案,这个方案只适用于一些简单应用,而不适用于一个稳定的和完整的应用(这将降低由其他库提供的功能)。OpenCV有一个主要的函数,叫cvPutText()。这个函数可以在图像上输出一些文本。参数text所指向的文本将打印到图像上,参数origin指定
2013-05-04 20:48:24 650
转载 绘图
我们经常需要绘制图像或者在已有的图像上方绘制一些图形。为此,OpenCV提供了一系列的函数帮助我们绘制直线、方形和圆形等。直线cvLine()是绘图函数中最简单的,只需用Bresenham算法[Bresenham65]画一条线:void cvLine( CvArr* array, CvPoint pt1, CvPoint pt2
2013-05-04 20:45:48 544
转载 矩阵和图像操作(9)
cvSub()是一个简单的减法函数,它对数组src2和src1对应的元素进行减法运算,然后把结果赋给dst。如果数组mask非空,那么dst中元素对应位置的mask中的0元素不会因此而改变。相关的函数cvSubS()执行相类似的功能,但它会对src的每一个元素减去一个常量value。函数cvSubRS()的功能和cvSubS()相似,但不是src的每个元素减去一个常量,而是常量减去的src中的每一
2013-05-04 20:39:56 868
转载 矩阵和图像操作(8)
计算C范数时,数组src将被进行比例变标,使其中绝对值最大的值等于a。当计算L1范数成L2范数时,该数组也将被缩放,如使其范数为a。如果norm_type的值设置为CV_MINMAX,那么将会对数组的所有的值进行转化,使它们线性映射到a和b之间(包括a和b)。与以前一样,如果参数mask非空,那么只有与掩码非0值对应的像素会对范数的计算有贡献,并且只有那些像素会被cvNormalize()改变
2013-05-04 20:39:05 548
转载 矩阵和图像操作(7)
cvMergevoid cvMerge( const CvArr* src0, const CvArr* src1, const CvArr* src2, const CvArr* src3, CvArr* dst ); 【67】cvMerge()是cvSplit()的逆运算。数组src0,src1,src2,和src3将被合并到数组
2013-05-04 20:38:11 623
转载 矩阵和图像操作(6)
cvGetDiag ()类似于cvGetCol();它能从一个矩阵选择某一条对角线并将其作为向量返回。submat是一个矩阵类型的头指针。函数cvGetDiag()将填充该向量头指针中的各分量,以使用指向arr中的正确信息。注意,调用cvGetDiag()会修改输入的头指针,将数据指针指向arr对角线上的数据,实际上,并没有复制arr的数据。可选参数diag表明submat指向哪一条对角线的。如果
2013-05-04 20:36:42 880
转载 矩阵和图像操作(5)
cvDetdouble cvDet(const CvArr* mat); cvDet()用于计算一个方阵的行列式。这个数组可以是任何数据类型,但它必须是单通道的,如果是小的矩阵,则直接用标准公式计算。然而对于大型矩阵,这样就不是很有效,行列式的计算使用高斯消去法。值得指出的是,如果已知一个矩阵是对称正定的,也可以通过奇异值分解的策略来解决。欲了解更多信息,请参阅"cvSVD"一节。但这
2013-05-04 20:34:20 726
转载 矩阵和图像操作(4)cvcolor
cvConvertScaleAbs()与cvConvertScale()基本相同,区别是dst图像元素是结果数据的绝对值。具体说来,cvConvertScaleAbs()先缩放和平移,然后算出绝对值,最后进行数据类型的转换。cvCopyvoid cvCopy( const CvArr* src, CvArr* dst, const Cv
2013-05-04 20:31:35 1606
转载 矩阵和图像操作(3)
cvAvgCvScalar cvAvg( const CvArr* arr, const CvArr* mask = NULL ); cvAvg()计算数组arr的平均像素值,如果mask为非空,那么平均值仅由那些mask值为非0的元素相对应的像素算出。此函数还有别名cvMean(),但不推荐使用。cvAvgSdvcvAvgSdv( c
2013-05-04 20:26:13 895
转载 矩阵和图像操作(2)
矩阵和图像操作(2)这个函数可用来实现alpha 融合 [Smith79; Porter84];也就是说,它可以用于一个图像同另一个图像的融合,函数的形式如下:void cvAddWeighted( const CvArr* src1, double alpha, const CvArr* src2, double b
2013-05-04 20:20:04 585
转载 矩阵和图像操作(1)
矩阵和图像操作(1)表3-3列出了一些操作矩阵图像的函数,其中的大部分对于图像处理非常有效。它们实现了图像处理中的基本操作,例如对角化、矩阵变换以及一些更复杂的诸如计算图像的统计操作。【47】表3-3:矩阵和图像基本操作函数名称描述cvAbs计算数组中所有元素的绝对值cvAbsDiff计算两
2013-05-04 20:15:22 661
转载 矩阵数据的存取
访问矩阵中的数据有3种方法:简单的方法、麻烦的方法和恰当的方法。简单的方法从矩阵中得到一个元素的最简单的方法是利用宏CV_MAT_ELEM()。这个宏(参见例3-4)传入矩阵、待提取的元素的类型、行和列数4个参数,返回提取出的元素的值。例3-4:利用CV_MAT_ELEM()宏存取矩阵CvMat* mat = cvCreateMat( 5, 5, CV_32FC1 ); floa
2013-05-02 22:31:10 1012
人工智能狂潮 机器人会超越人类吗
2018-10-15
linux网络编程-宋敬彬-part1
2016-06-10
主元分析对称性
2013-03-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人