OpenCV
文章平均质量分 77
yang_xian521
爱好篮球
展开
-
OpenCV学习笔记(十六)——CamShift研究
CamShitf算法,即Continuously Apative Mean-Shift算法,基本思想就是对视频图像的多帧进行MeanShift运算,将上一帧结果作为下一帧的初始值,迭代下去。基本步骤为:1.选取关键区域2.计算该区域的颜色概率分布--反向投影图3.用MeanShift算法找到下一帧的特征区域4.标记并重复上述步骤该算法的关键就是可以在目标大小发生改变的时候,可以原创 2011-10-31 20:57:43 · 13233 阅读 · 4 评论 -
OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video
OpenCV配套的教程Tutorials对于Video的部分,没有实例进行说明,我只能摸石头过河啦,之前试过一个camShift做目标检测,这次试一试光流法做运动估计。这里使用的光流法是比较常用的 Lucas-Kanade方法。对于光流法的原理,我就不过多介绍了,主要讲使用OpenCV如何实现。首先利用goodFeaturesToTrack函数得到图像中的强边界作为跟踪的特征点,接下来要调用c原创 2011-11-18 18:18:07 · 40038 阅读 · 22 评论 -
OpenCV学习笔记(二十六)——小试SVM算法ml
总感觉自己停留在码农的初级阶段,要想更上一层,就得静下心来,好好研究一下算法的东西。OpenCV作为一个计算机视觉的开源库,肯定不会只停留在数字图像处理的初级阶段,我也得加油,深入研究它的算法库。就从ml入手吧,最近做东西遇到随机森林,被搞的头大,深深感觉自己肚子里货太少,关键时刻调不出东西来。切勿浮躁,一点点研究吧。这次就先介绍一下机器学习中的一个常用算法SVM算法,即支持向量机Suppor原创 2011-11-15 15:07:54 · 52749 阅读 · 29 评论 -
OpenCV学习笔记(十七)——运动分析和物体跟踪Video
这个库中相关的函数有calcOpticalFlowPyrLK、calcOpticalFlowFarneback、estimateRigidTransform、updateMotionHistory、calcMotionGradient、calcGlobalOrientation、segmentMotion、CamShift、meanShift;还有卡尔曼滤波器类KalmanFilter,类内成员函原创 2011-11-08 17:33:41 · 20910 阅读 · 13 评论 -
OpenCV学习笔记(九)——2维特征Feature2D
基于特征点的图像匹配是图像处理中经常会遇到的问题,手动选取特征点太麻烦了。比较经典常用的特征点自动提取的办法有Harris特征、SIFT特征、SURF特征。先介绍利用SURF特征的特征描述办法,其操作封装在类SurfFeatureDetector中,利用类内的detect函数可以检测出SURF特征的关键点,保存在vector容器中。第二部利用SurfDescriptorExtractor类进行原创 2011-10-24 20:51:10 · 46051 阅读 · 35 评论 -
OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年
首先还是要感谢箫鸣朋友在我《OpenCV学习笔记(四十)——再谈OpenCV数据结构Mat详解》的留言,告诉我M.at(3, 3)在Debug模式下运行缓慢,推荐我使用M.ptr(i)此类方法。这不禁勾起了我测试一下的冲动。下面就为大家奉上我的测试结果。我这里测试了三种操作Mat数据的办法,套用流行词,普通青年,文艺青年,为啥第三种我不叫2b青年,大家慢慢往后看咯。普通青年的操作的办法原创 2011-12-29 11:47:18 · 48148 阅读 · 37 评论 -
OpenCV学习笔记(四十)——再谈OpenCV数据结构Mat详解
我记得开始接触OpenCV就是因为一个算法里面需要2维动态数组,那时候看core这部分也算是走马观花吧,随着使用的增多,对Mat这个结构越来越喜爱,也觉得有必要温故而知新,于是这次再看看Mat。Mat最大的优势跟STL很相似,都是对内存进行动态的管理,不需要之前用户手动的管理内存,对于一些大型的开发,有时候投入的lpImage内存管理的时间甚至比关注算法实现的时间还要多,这显然是不合适的。除了原创 2011-12-28 10:33:32 · 165709 阅读 · 22 评论 -
OpenCV学习笔记(四十一)——再看基础数据结构core
记得我在OpenCV学习笔记(四)——新版本的数据结构core里面讲过新版本的数据结构了,可是我再看这部分的时候,我发现我当时实在是看得太马虎了。对于新版本的数据结构,我再说说。Point_类不用多言,里面两个成员变量x,y。Point_就是Point2i,也是Point,Point_就是Point2f,Point_就是Point2d。Point3_类不太常用,跟Point_类差不太多,成原创 2011-12-28 12:51:40 · 41606 阅读 · 9 评论 -
OpenCV学习笔记(三十九)——再谈OpenCV的数据结构,Mat是如此强大
还是一个实时性要求的程序最近把我弄得有些上火。为了提高代码运行的速度,我也是又新啃东西学了。由于我代码里使用了vector,网上搜来搜去有人说vector慢,又有人说STL里的sort排序速度是我等常人不能企及的,有人说要少resize,这个重新分配内存非常耗时,又有人说要用swap来彻底删除不要的内存空间。带着这么多疑问,我实在不知道我程序慢的原因。于是乎阅读了《Effective STL》,这原创 2011-12-27 21:09:36 · 39036 阅读 · 17 评论 -
OpenCV学习笔记(三十七)——实用函数、系统函数、宏core
如果你想在OpenCV的基础上自己开发一些算法,我觉得core这部分内容不得不精啊,能熟练使用OpenCV的数据结构是开发的基础,又是重中之重。最近就又拌在这上头了,所以再重温一下。这次分析一下Utility and System Functions and Macros这部分,就是实用函数、系统函数和宏。OpenCV在这部分里包含一些类似标准c++、c里面的一些东西。系统函数有很多。有些原创 2011-12-20 16:22:31 · 15719 阅读 · 1 评论 -
OpenCV学习笔记(三十八)——显示当前FPS
最近做一个东西,需要实时显示,于是想在屏幕显示FPS。FPS是Frame Per Second的缩写,中文意思是每秒帧数,即帧速。FPS是测量用于保存、显示动态视频的信息数量。通俗来讲就是指动画或视频的画面数。这就需要我在系统函数一讲里提到的getTickCount、getTickFrequency这两个函数了。前一个函数返回tick次数,后一个函数返回每秒tick次数,它们的比就是时间咯。原创 2011-12-22 16:20:29 · 18546 阅读 · 3 评论 -
OpenCV学习笔记(三十六)——Kalman滤波做运动目标跟踪
kalman滤波大家都很熟悉,其基本思想就是先不考虑输入信号和观测噪声的影响,得到状态变量和输出信号的估计值,再用输出信号的估计误差加权后校正状态变量的估计值,使状态变量估计误差的均方差最小。具体它的原理和实现,我想也不用我在这里费口舌,但这个理论基础必须的有,必须得知道想用kalman滤波做跟踪,必须得先建立运动模型和观察模型,不是想用就能用的。如果不能建立运动模型,也就意味着你所要面对的问题不原创 2011-12-08 09:26:56 · 50021 阅读 · 11 评论 -
OpenCV学习笔记(三十五)——用Qt做摄像头读取
之前介绍了Qt+OpenCV的图形界面设计http://blog.csdn.net/yang_xian521/article/details/6968012,那篇里面只是读取了图片,这次再略进一步,再实现一个摄像头视频的读取。再介绍一下我的开发环境Qt4.7.4+OpenCV2.3.1+VS2008,其实很简单,先在自己的QMainWindow子类里面声明如下变量:public: cam原创 2011-12-05 17:36:49 · 19471 阅读 · 11 评论 -
OpenCV学习笔记(三十四)——OpenCV路在何方
之前做了haartraining的东西,感觉到OpenCV里面实现的东西还不是很好,这个老版本的haartraining的东西在新版本仍然是用老版本的函数来实现的,让我很不爽。于是好期待下一版本的到来,索性研究一下OpenCV路在何方,由于才接触OpenCV不久,就研究它的路在何方有些自不量力,但还是搜集了不少的资料,把我搜集的东西和大家分享一下,有说的不对的,欢迎大家都指点出来~~首先说说O原创 2011-12-05 13:27:48 · 25245 阅读 · 19 评论 -
OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt
OpenCV的发展趋势真是越来越向Linux方向发展,对Windows平台的支持越来越少,2.2版本之后把CvvImage也给删除了,这让人如何开发MFC程序啊,网上搜了好久,基本的办法都是调用之前版本的代码,继续使用CvvImage,这样会导致一个很严重的问题,就是程序里显示的所有的图片都必须是CvvImage类,不能用MFC的图片显示方法,这就需要对代码进行大量的修改,不符合开发的要求。感觉大原创 2011-11-09 20:08:38 · 12495 阅读 · 5 评论 -
OpenCV学习笔记(十二)——随机数产生器RNG
用OpenCV做算法的朋友们肯定为随机数烦恼过,新版本一直支持随机数产生器啦,而且还继续支持之前版本的c格式的函数,不过与时俱进,我这里介绍C++的RNG类。它可以压缩一个64位的i整数并可以得到scalar和array的随机数。目前的版本支持均匀分布随机数和Gaussian分布随机数。随机数的产生采用的是Multiply-With-Carry算法和Ziggurat算法。其构造函数的初始化可以原创 2011-11-03 11:36:16 · 53564 阅读 · 3 评论 -
OpenCV学习笔记(三十一)——让demo在他人电脑跑起来
这一节的内容感觉比较土鳖。这从来就是一个老生常谈的问题。学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那里演示一下,一定要选择静态库使用mfc,而不是选择动态链接库,否则在人家电脑里没有对应的dll文件,是无法运行起来的。可见老师在这方面吃过亏啊。昨天用OpenCV写了个东西,发过去让人家测试,可人家告诉我:“你这土鳖程序在我这无法运行“,好囧啊。这里把我的解决过原创 2011-11-29 12:49:45 · 21046 阅读 · 13 评论 -
OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住
感谢大家对我博客的支持,昨天写的那个土鳖的bloghttp://blog.csdn.net/yang_xian521/article/details/7022701,为了让自己的程序在别人那里运行起来,竟然加了十余个dll,才搞定,太不方便了。对于我这土鳖的办法,有好心的网友看不下去了,告诉我OpenCV是可以制作静态链接库。我顿时来了兴致,百度之,发现确实有办法,但很多都是老版本的数据结构,还是原创 2011-11-30 18:00:02 · 21068 阅读 · 16 评论 -
OpenCV学习笔记(三十三)——用haar特征训练自己的分类器(再做手势检测)
之前介绍过一篇利用级联分类器对目标进行检测的文章http://blog.csdn.net/yang_xian521/article/details/6973667,用的就是haar特征。发现OpenCV自带的库里的haar特征只有人脸、人脸的器官和人的身体,最近又想玩一个人手的检测,之前用颜色特征做的,感觉很不靠谱,这次用haar特征再试一次。这就需要用haartraining这个工具训练自己的手原创 2011-12-03 09:40:36 · 55368 阅读 · 42 评论 -
OpenCV学习笔记(六)——对XML和YAML文件实现I/O操作
1. XML、YAML文件的打开和关闭XML\YAML文件在OpenCV中的数据结构为FileStorage,打开操作例如:string filename = "I.xml";FileStorage fs(filename, FileStorage::WRITE);\\...fs.open(filename, FileStorage::READ);文件关闭操作会在FileSt原创 2011-10-23 10:22:51 · 40778 阅读 · 14 评论 -
OpenCV学习笔记(二十四)——初探机器学习库ml
这部分内容应该是OpenCV高深精髓的一部分。给OpenCV插上了翅膀,可以使它实现更强大的功能,而不是简单的做一些基本的图像处理。文采太差,就不描绘machine learning的强大了。直接剖析之。大部分的分类器和识别的算法都封装在了c++的类中。有些类有一些共同的基础,都被定义在CvStatModel类中了。那就先介绍这个统计模型类CvStatModel,它是机器学习统计模型的基础原创 2011-11-14 10:30:47 · 20423 阅读 · 3 评论