2013年7月26日

摘要: 图像锐化处理的主要目的是突出图像中的细节,像边沿区域,锐化处理与图像在该点的突变程度有关。图像微分增强了边缘与其他突变的信息,并削弱了灰度变化缓慢的信息。以灰度图像为例,它的理论基础是这样的,如果出现一个边缘,那么图像的灰度就会有一定的变化,为了方便假设由黑渐变为白代表一个边界,那么对其灰度分析,在边缘的灰度函数就是一个一次函数y=kx,对其求一阶导数就是其斜率k,就是说边缘的一阶导数是一个常数,而由于非边缘的一阶导数为零,这样通过求一阶导数就能初步判断图像的边缘了。通常是X方向和Y方向的导数,也就是梯度。理论上计算机就是通过这种方式来获得图像的边缘。 但是,具体应用到图像中你会发现这个... 阅读全文
posted @ 2013-07-26 11:18 Freshman11 阅读(688) 评论(0) 推荐(0) 编辑

2013年7月21日

摘要: 平滑处理即模糊处理,平滑的用途有很多,最常见的是用来减少图像上的噪声或者失真。openCV提供的平滑的操作有五种,所有操作由函数cvsmooth实现。void cvSmooth(const CvArr* src,CvArr* dst,int smoothtype=CV_GAUSSIAN,int param1=3,int param2=0,int param3=0,int param4=0,);cvSmooth包括4个参数:param1,param2,param3,param4,这些参数的含义取决于smoothType的值。smoothType五种类型:CV_BLUR(简单模糊),CV_BLUR 阅读全文
posted @ 2013-07-21 11:40 Freshman11 阅读(794) 评论(0) 推荐(0) 编辑

2013年7月18日

摘要: vector::erase():从指定容器删除指定位置的元素或某段范围内的元素vector::erase()方法有两种重载形式如下:iterator erase( iterator _Where);1.iterator erase( iterator _First, iterator _Last);如果是删除指定位置的元素时: 返回值是一个迭代器,指向删除元素下一个元素;如果是删除某范围内的元素时:返回值也表示一个迭代器,指向最后一个删除元素的下一个元素;erase是直接作用在容器上的,不像sort,remove_if等只是作用在容器的元素上。 阅读全文
posted @ 2013-07-18 09:24 Freshman11 阅读(496) 评论(0) 推荐(0) 编辑

2013年7月17日

摘要: argc表示参数的个数,argv[]用来存放参数,但argv[0]存放的是程序的名字***,argv[N]是用来存放参数的 当在VS2010中编写好程序后: int main(int argc,char** argv){ /*IplImage* img = cvLoadImage(argv[1]); cvNamedWindow("Example1",CV_WINDOW_AUTOSIZE); cvShowImage("Example1",img); cvWaitKey(0); cvReleaseImage(&img); cvDestroyWindo 阅读全文
posted @ 2013-07-17 17:24 Freshman11 阅读(189) 评论(0) 推荐(0) 编辑

2013年7月16日

摘要: 临时变量不能作为非const引用参数,不是因为他是常量,而是因为c++编译器的一个关于语义的限制。如果一个参数是以非const引用传入,c++编译器就有理由认为程序员会在函数中修改这个值,并且这个被修改的引用在函数返回后要发挥作用。但如果你把一个临时变量当作非const引用参数传进来,由于临时变量的特殊性,程序员并不能操作临时变量,而且临时变量随时可能被释放掉,所以,一般说来,修改一个临时变量是毫无意义的,据此,c++编译器加入了临时变量不能作为非const引用的这个语义限制,意在限制这个非常规用法的潜在错误 阅读全文
posted @ 2013-07-16 11:15 Freshman11 阅读(273) 评论(0) 推荐(0) 编辑

2013年7月2日

摘要: 参数传递:形参的初始化与变量的初始化一样:如果形参具有非引用类型,则复制实参的值;如果形参位引用类型,则它只是实参的别名.一.非引用形参1.指针形参:调用函数后,指针的值保持不变,但指针所指的对象改变.如需保护指针指向的对象的值,则形参需定义为指向const对象的指针.2.const形参:在调用函数时,如果该函数使用非引用的非 const 形参,则既可给该函数传递 const 实参也可传递非 const 的实参。则在函数中,不可以改变实参的局部副本。由于实参仍然是以副本的形式传递,因此传递给 fcn 的既可以是 const 对象也可以是非 const 对象。二.引用形参1.利用引用参数让函数修 阅读全文
posted @ 2013-07-02 15:59 Freshman11 阅读(278) 评论(0) 推荐(0) 编辑

2013年7月1日

摘要: 错误:fatal error C1010: unexpected endof file while looking for precompiled header. Did you forget toadd '#include"StdAfx.h"' to your source?#include"StdAfx.h" 你把这个放在头文件里面就行了2 vc++编程出现错误error C2447: missing function header (old-styleformal list?)原因:函数后面多了分号;SUNSHINE_APISSN_ 阅读全文
posted @ 2013-07-01 15:35 Freshman11 阅读(3165) 评论(0) 推荐(0) 编辑

2013年6月27日

摘要: 在使用Visual Studio开发调试程序时,我们经常需要打开查看窗口(Watch)来分析变量。有时在查看窗口显示的内容不是很直观。为了能从查看窗口的变量中得到更多的信息,我们需要一些小的技巧。下面是几个例子。1. Windows消息在开发调试界面程序时,我们经常需要查看消息的内容。当在查看窗口中,仅仅只显示出消息对应的整数值,我们并不能直观地知道究竟是什么消息。比如:为了能让查看窗口显示出消息内容,我们只需要在变量名添加“, wm”的格式化后缀,就能显示消息的名字:2. 句柄返回值Windows有很多API返回一个HANDLE类型的值来表示操作是否成功。当操作失败时,返回一个特定的值来表示 阅读全文
posted @ 2013-06-27 21:51 Freshman11 阅读(336) 评论(0) 推荐(0) 编辑
摘要: Visual studio常用的调试技巧 跳到当前光标处(Ctrl+F10) 我经常看到人们为了到达目标代码位置,而在程序中早早设定了断点,然后反复地按F10/F11,一步步走到目标代码处。当程序员的确需要仔细观察每一步的状态变化时, F10/F11是合理的选择。然而多数情况下,人们只想快速到达他们真正关心的代码处,这时候F10/F11就不是最佳选择了。 这时,你应该利用“跳到当前光标处”这个功能。先把光标定位在要测的目标代码行上,再同时按Ctrl和F10,被测程序将直接跳到该行停下。你再也不用按许多次F10/F11了。即使目标代码位于独立的类或方法中,你仍然可以从当前正在检查的地方... 阅读全文
posted @ 2013-06-27 21:49 Freshman11 阅读(197) 评论(0) 推荐(0) 编辑
摘要: CTypedPtrList类是个模板类,一般在软件开发中用到的时候比较多,它的作用就是类似一个链表,下面是这个类的原型 template class CTypedPtrList : public BASE_CLASS第一个参数说明是列表的基类,这里必须是个指针列表类(Coblist或者CPtrlist,自己觉得用其他的列表类也可以,只要是指针列表类)第二个参数指在列表类中所存放的类型为什么不直接用Coblist或者CPtrlist呢?这是有原因的,因为CTypedPtrList类又进一步的封装了CPtrlist,并且为消除了一些错误,还提供了一些类型的强制转化,所以说一般都是用CTypePtr 阅读全文
posted @ 2013-06-27 21:29 Freshman11 阅读(713) 评论(0) 推荐(0) 编辑

导航