OpenCV学习笔记
文章平均质量分 77
OpenCV学习心得一网打尽!
yang_xian521
爱好篮球
展开
-
OpenCV学习笔记(五十五)——用OpenCV做人脸识别和性别识别contrib
人脸识别的故事说也说不完,调研的事还是交给大家吧。这里说的是用OpenCV做人脸识别。因为是真正的人脸识别,不是搞笑娱乐的东西,所以数据库一定要强大的,推荐个网站http://www.face-rec.org/databases/。这里有最全的人脸库的概述,希望大家能找到自己需要的人脸库(PS:我现在特别需要一个3d的人脸库,不知道哪位大侠知道如何free获取,或者愿意共享给我那更是极好的了,原创 2012-07-15 11:52:46 · 66244 阅读 · 29 评论 -
OpenCV学习笔记(五十四)——概述FaceRecognizer人脸识别类contrib
在最新版的2.4.2中,文档的更新也是一大亮点,refrence manual扩充了200多页的内容,添加了contrib部分的文档。contrib就是指OpenCV中新添加的模块,但又不是很稳定,可以认为是一个雏形的部分。这次结合refman的阅读,介绍一下FaceRecognizer这个人脸识别类,这个类也是2.4.2更新日志里着重强调过的更新,配套的文档也是相当充实。这个类的基类也是Algo原创 2012-07-11 15:11:29 · 77596 阅读 · 52 评论 -
OpenCV学习笔记(五十三)——新版本2.4.2简介&FREAK和ORB特征描述子效果对比features2d
OpenCV 2.4.2简介OpenCV从未放慢自己前进的步法,就在7月4日,最新版的2.4.2又放出来了。与之同时放出的还有两个网站http://opencv.org/和http://answers.opencv.org,前者作为一个正式的全新的官方用户网站,简单浏览了一下,应该是一个对应之前维基百科上的那个网站,是一个介绍性的新闻网站,对开发者的意义可能不是太大;后面这个网站就厉害了,是一原创 2012-07-10 20:54:50 · 38378 阅读 · 54 评论 -
OpenCV学习笔记(五十二)——号外:OpenCV 2.4.1 又出来了。。。。。
距离2.4.0放出来才一个月。儿童节当天2.4.1就出炉了。。。。真心跟不上节奏啊,路漫漫其修远兮。。。。这次主要的改变还是bug的修订,之前有朋友告诉我,说他的2.3.1版本说什么都不能成功配置CUDA,后来他用2.2版本就成功了,看来新出的版本bug还是很多的,也不能盲目求新。这次的2.4.1版本更新如下:GPU模块支持了CUDA4.1、CUDA4.2版本,添加了一个文件字符串存储回读原创 2012-06-06 08:41:24 · 10160 阅读 · 9 评论 -
OpenCV学习笔记(五十一)——imge stitching图像拼接stitching
stitching是OpenCV2.4.0一个新模块,功能是实现图像拼接,所有的相关函数都被封装在Stitcher类当中。这个类当中我们可能用到的成员函数有createDefault、estimateTransform、composePanorama、stitch。其内部实现的过程是非常繁琐的,需要很多算法的支持,包括图像特征的寻找和匹配,摄像机的校准,图像的变形,曝光补偿和图像融合。但这些模块的原创 2012-05-22 17:26:49 · 69963 阅读 · 87 评论 -
OpenCV学习笔记(五十)——Algorithm类介绍(core)
刚开始学习新的2.4.0,大概看了一遍使用手册,还是有些失望的,很多章节还是2.3.1的内容,文档上的代码也是漏洞很多。这里就简单介绍一下Algorithm这个新的基类。本来以为这部分是一个新模块的,看了referenceManual后才知道它只是一个基类,集成了一些相对复杂的算法,比如BM算法等立体匹配算法,前景背景分离的算法,光流法等模块都集成在其中。类内成员函数主要有get、set、writ原创 2012-05-04 13:25:03 · 30120 阅读 · 11 评论 -
OpenCV学习笔记(四十九)——号外!OpenCV-2.4.0 release 千呼万唤始出来
最近一直很忙,没有及时回复网友的咨询和疑问,有些回复也是寥寥数语。其实我也没有办法,面对大量的问题,有大部分都是可以通过网络和图书获得答案,我实在没有精力每个问题都详细具体的回答,希望大家谅解,还是一位老师说的好:“知之为知之,不知百度知”。前阵子有些朋友已经发现了OpenCV-2.4.0beta已经放出了,又有重大改动,很是让人兴奋,我前一篇blog——OpenCV学习笔记(三十四)——Op原创 2012-05-03 17:01:03 · 12250 阅读 · 5 评论 -
OpenCV学习笔记(四十八)——PCA算法实现core
PCA(principal component analysis,主成分分析),我想是大家用的最多的降维手段,对于PCA的理解,我想大神们都各有各的绝招,可以应用的场合也非常多。下面就介绍一下OpenCV中PCA这个类,因为常用,所以这个类相对OpenCV而言显得比较独立,放在了core这部分中。PCA类的成员函数包括构造函数、运算符重载()、project、backProject这几个函数,原创 2012-04-10 20:41:10 · 27686 阅读 · 27 评论 -
OpenCV学习笔记(四十七)——VideoWriter生成视频流highgui
首先要先纠正个误区,我见有人用OpenCV做多媒体开发,真的是很搞笑,OpenCV这东西再强大,这方面也不行的,之所以把视频读取写入这部分做的强大一些,也是为了方便大家做视频处理的时候方便些,而且这部分也是基于vfw和ffmpeg二次开发的,功能还是很弱的。一定要记住一点,OpenCV是一个强大的计算机视觉库,而不是视频流编码器或者解码器。希望大家不要走入这个误区,可以把这部分简单单独看待。目前,原创 2012-04-09 16:38:09 · 120581 阅读 · 41 评论 -
OpenCV学习笔记(四十六)——FAST特征点检测features2D
特征点检测和匹配是计算机视觉中一个很有用的技术。在物体检测,视觉跟踪,三维常年关键等领域都有很广泛的应用。这一次先介绍特征点检测的一种方法——FAST(features from accelerated segment test)。很多传统的算法都很耗时,而且特征点检测算法只是很多复杂图像处理里中的第一步,得不偿失。FAST特征点检测是公认的比较快速的特征点检测方法,只利用周围像素比较的信息就可以原创 2012-03-30 16:50:32 · 63032 阅读 · 28 评论 -
OpenCV学习笔记(四十五)——小试随机森林(random forest)算法ml
对于随机森林算法,原理我想大家都会去看论文,推荐两个老外的网址http://www.stat.berkeley.edu/users/breiman/RandomForests/和https://cwiki.apache.org/MAHOUT/random-forests.html,第一个网址是提出随机森林方法大牛写的,很全面具体,第二个是我自己找的一个,算是一个简化版的介绍吧。说白了,随机森林分类原创 2012-03-12 18:38:22 · 49655 阅读 · 32 评论 -
OpenCV学习笔记(四十四)——初探GPU
好久没有更新啦,感觉最近没有什么特别的收获值得和大家分享,还是有些懒,TLD结束了也没有写个blog做总结。还是和大家分享一下OpenCV的一个大家很少接触的模块吧——GPU。这个部分我接触的也是很少,只是根据教程和大家简单交流一下,如果有高手有使用心得,欢迎多多批评。OpenCV的GPU模块只支持NVIDIA的显卡,原因是该部分是基于NVIDIA的CUDA和NVIDIA的NPP模块实现的。而原创 2012-02-13 14:12:32 · 43205 阅读 · 27 评论 -
OpenCV学习笔记(四十三)——存取像素值操作汇总core
在上一讲OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年里,对Mat内数据的各种读写操作进行了速度的比较,都是我自己想到的方法,感觉不够系统,这次整理了下思路,参考了文献,把能想到的方法进行了汇总,希望能对大家有所帮助。1.存取单个像素值最通常的方法就是img.at(i,j) = 255;img.at(i,j)[0] = 255;如果你觉得at操原创 2012-01-06 18:36:12 · 36977 阅读 · 9 评论 -
OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年
首先还是要感谢箫鸣朋友在我《OpenCV学习笔记(四十)——再谈OpenCV数据结构Mat详解》的留言,告诉我M.at(3, 3)在Debug模式下运行缓慢,推荐我使用M.ptr(i)此类方法。这不禁勾起了我测试一下的冲动。下面就为大家奉上我的测试结果。我这里测试了三种操作Mat数据的办法,套用流行词,普通青年,文艺青年,为啥第三种我不叫2b青年,大家慢慢往后看咯。普通青年的操作的办法原创 2011-12-29 11:47:18 · 48398 阅读 · 37 评论 -
OpenCV学习笔记(四十一)——再看基础数据结构core
记得我在OpenCV学习笔记(四)——新版本的数据结构core里面讲过新版本的数据结构了,可是我再看这部分的时候,我发现我当时实在是看得太马虎了。对于新版本的数据结构,我再说说。Point_类不用多言,里面两个成员变量x,y。Point_就是Point2i,也是Point,Point_就是Point2f,Point_就是Point2d。Point3_类不太常用,跟Point_类差不太多,成原创 2011-12-28 12:51:40 · 41607 阅读 · 9 评论 -
OpenCV学习笔记(四十)——再谈OpenCV数据结构Mat详解
我记得开始接触OpenCV就是因为一个算法里面需要2维动态数组,那时候看core这部分也算是走马观花吧,随着使用的增多,对Mat这个结构越来越喜爱,也觉得有必要温故而知新,于是这次再看看Mat。Mat最大的优势跟STL很相似,都是对内存进行动态的管理,不需要之前用户手动的管理内存,对于一些大型的开发,有时候投入的lpImage内存管理的时间甚至比关注算法实现的时间还要多,这显然是不合适的。除了原创 2011-12-28 10:33:32 · 165965 阅读 · 22 评论 -
OpenCV学习笔记(三十九)——再谈OpenCV的数据结构,Mat是如此强大
还是一个实时性要求的程序最近把我弄得有些上火。为了提高代码运行的速度,我也是又新啃东西学了。由于我代码里使用了vector,网上搜来搜去有人说vector慢,又有人说STL里的sort排序速度是我等常人不能企及的,有人说要少resize,这个重新分配内存非常耗时,又有人说要用swap来彻底删除不要的内存空间。带着这么多疑问,我实在不知道我程序慢的原因。于是乎阅读了《Effective STL》,这原创 2011-12-27 21:09:36 · 39036 阅读 · 17 评论 -
OpenCV学习笔记(三十八)——显示当前FPS
最近做一个东西,需要实时显示,于是想在屏幕显示FPS。FPS是Frame Per Second的缩写,中文意思是每秒帧数,即帧速。FPS是测量用于保存、显示动态视频的信息数量。通俗来讲就是指动画或视频的画面数。这就需要我在系统函数一讲里提到的getTickCount、getTickFrequency这两个函数了。前一个函数返回tick次数,后一个函数返回每秒tick次数,它们的比就是时间咯。原创 2011-12-22 16:20:29 · 18548 阅读 · 3 评论 -
OpenCV学习笔记(三十七)——实用函数、系统函数、宏core
如果你想在OpenCV的基础上自己开发一些算法,我觉得core这部分内容不得不精啊,能熟练使用OpenCV的数据结构是开发的基础,又是重中之重。最近就又拌在这上头了,所以再重温一下。这次分析一下Utility and System Functions and Macros这部分,就是实用函数、系统函数和宏。OpenCV在这部分里包含一些类似标准c++、c里面的一些东西。系统函数有很多。有些原创 2011-12-20 16:22:31 · 15722 阅读 · 1 评论 -
OpenCV学习笔记(三十六)——Kalman滤波做运动目标跟踪
kalman滤波大家都很熟悉,其基本思想就是先不考虑输入信号和观测噪声的影响,得到状态变量和输出信号的估计值,再用输出信号的估计误差加权后校正状态变量的估计值,使状态变量估计误差的均方差最小。具体它的原理和实现,我想也不用我在这里费口舌,但这个理论基础必须的有,必须得知道想用kalman滤波做跟踪,必须得先建立运动模型和观察模型,不是想用就能用的。如果不能建立运动模型,也就意味着你所要面对的问题不原创 2011-12-08 09:26:56 · 50022 阅读 · 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 · 25249 阅读 · 19 评论 -
OpenCV学习笔记(三十三)——用haar特征训练自己的分类器(再做手势检测)
之前介绍过一篇利用级联分类器对目标进行检测的文章http://blog.csdn.net/yang_xian521/article/details/6973667,用的就是haar特征。发现OpenCV自带的库里的haar特征只有人脸、人脸的器官和人的身体,最近又想玩一个人手的检测,之前用颜色特征做的,感觉很不靠谱,这次用haar特征再试一次。这就需要用haartraining这个工具训练自己的手原创 2011-12-03 09:40:36 · 55370 阅读 · 42 评论 -
OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住
感谢大家对我博客的支持,昨天写的那个土鳖的bloghttp://blog.csdn.net/yang_xian521/article/details/7022701,为了让自己的程序在别人那里运行起来,竟然加了十余个dll,才搞定,太不方便了。对于我这土鳖的办法,有好心的网友看不下去了,告诉我OpenCV是可以制作静态链接库。我顿时来了兴致,百度之,发现确实有办法,但很多都是老版本的数据结构,还是原创 2011-11-30 18:00:02 · 21070 阅读 · 16 评论 -
OpenCV学习笔记(三十一)——让demo在他人电脑跑起来
这一节的内容感觉比较土鳖。这从来就是一个老生常谈的问题。学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那里演示一下,一定要选择静态库使用mfc,而不是选择动态链接库,否则在人家电脑里没有对应的dll文件,是无法运行起来的。可见老师在这方面吃过亏啊。昨天用OpenCV写了个东西,发过去让人家测试,可人家告诉我:“你这土鳖程序在我这无法运行“,好囧啊。这里把我的解决过原创 2011-11-29 12:49:45 · 21049 阅读 · 13 评论 -
OpenCV学习笔记(三十)——解开VideoInput面纱highgui
最近做一个东西,摄像头使用的高清摄像头,采集出来的视频是D1格式(720*480)。使用VideoCapture发现速度很忙,网上的朋友说VideoCapture提供的读写功能采用VFW,效率低下且有些格式支持不好。而 OpenCV 2.0 内置了videoInput Library,可以自动在VFW和DirectShow间切换。videoInput是老外写的功能强大的开源视频处理库。是一个第三方原创 2011-11-25 17:27:07 · 16190 阅读 · 4 评论 -
OpenCV学习笔记(二十九)——视频前景的提取Video
视频捕捉的对象中,背景通常保持不变。一般分析中关注移动的前景物体,威力提取出前景物体,需要建立背景的模型,将模型和当前帧进行比对检测前景物体。前景提取应用非常广泛,特别是在智能监控领域中。如果有不含前景物体的背景图片,提取前景的工作相对容易,只需要比对当前帧和背景图片的不同,调用函数absdiff实现。但是大多数情况,获得背景图片是不可能的,比如在复杂的场景下,或者有光线条件的变化。因此,就需原创 2011-11-19 16:54:31 · 38617 阅读 · 31 评论 -
OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video
OpenCV配套的教程Tutorials对于Video的部分,没有实例进行说明,我只能摸石头过河啦,之前试过一个camShift做目标检测,这次试一试光流法做运动估计。这里使用的光流法是比较常用的 Lucas-Kanade方法。对于光流法的原理,我就不过多介绍了,主要讲使用OpenCV如何实现。首先利用goodFeaturesToTrack函数得到图像中的强边界作为跟踪的特征点,接下来要调用c原创 2011-11-18 18:18:07 · 40038 阅读 · 22 评论 -
OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect
OpenCV支持的目标检测的方法是利用样本的Haar特征进行的分类器训练,得到的级联boosted分类器(Cascade Classification)。注意,新版本的C++接口除了Haar特征以外也可以使用LBP特征。先介绍一下相关的结构,级联分类器的计算特征值的基础类FeatureEvaluator,功能包括读操作read、复制clone、获得特征类型getFeatureType,分配图片原创 2011-11-16 10:58:10 · 106326 阅读 · 40 评论 -
OpenCV学习笔记(二十六)——小试SVM算法ml
总感觉自己停留在码农的初级阶段,要想更上一层,就得静下心来,好好研究一下算法的东西。OpenCV作为一个计算机视觉的开源库,肯定不会只停留在数字图像处理的初级阶段,我也得加油,深入研究它的算法库。就从ml入手吧,最近做东西遇到随机森林,被搞的头大,深深感觉自己肚子里货太少,关键时刻调不出东西来。切勿浮躁,一点点研究吧。这次就先介绍一下机器学习中的一个常用算法SVM算法,即支持向量机Suppor原创 2011-11-15 15:07:54 · 52758 阅读 · 29 评论 -
OpenCV学习笔记(二十五)——OpenCV图形界面设计Qt+VS2008
一直对MFC对OpenCV的支持不好而耿耿于怀,了解了Qt对OpenCV支持很好,但网上这方面的资料很少。大部分的图形交互的设计都是基于OpenCV2.0之前的数据结构lpImage进行的。最近得到了一本好书《OpenCV 2 Computer Vision Application Programming Cookbook》,下载的链接为http://ishare.iask.sina.com.cn原创 2011-11-14 15:40:08 · 37439 阅读 · 25 评论 -
OpenCV学习笔记(二十四)——初探机器学习库ml
这部分内容应该是OpenCV高深精髓的一部分。给OpenCV插上了翅膀,可以使它实现更强大的功能,而不是简单的做一些基本的图像处理。文采太差,就不描绘machine learning的强大了。直接剖析之。大部分的分类器和识别的算法都封装在了c++的类中。有些类有一些共同的基础,都被定义在CvStatModel类中了。那就先介绍这个统计模型类CvStatModel,它是机器学习统计模型的基础原创 2011-11-14 10:30:47 · 20424 阅读 · 3 评论 -
OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt
OpenCV的发展趋势真是越来越向Linux方向发展,对Windows平台的支持越来越少,2.2版本之后把CvvImage也给删除了,这让人如何开发MFC程序啊,网上搜了好久,基本的办法都是调用之前版本的代码,继续使用CvvImage,这样会导致一个很严重的问题,就是程序里显示的所有的图片都必须是CvvImage类,不能用MFC的图片显示方法,这就需要对代码进行大量的修改,不符合开发的要求。感觉大原创 2011-11-09 20:08:38 · 12495 阅读 · 5 评论 -
OpenCV学习笔记(二十二)——粒子滤波跟踪方法
粒子滤波法是指通过寻找一组在状态空间传播的随机样本对概率密度函数进行近似,以样本均值代替积分运算,从而获得状态最小方差分布的过程。对于粒子滤波跟踪方法,这里有一篇很浅显易懂的博客,我分享给大家http://www.cnblogs.com/yangyangcv/archive/2010/05/23/1742263.html。他的工作也是参考Rob Hess的程序做的,感谢老外的开源精神,我看原创 2011-11-04 17:32:44 · 38346 阅读 · 22 评论 -
OpenCV学习笔记(二十一)——绘图函数core
在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数。OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的。这里就介绍一下相关的函数。在绘图函数中都会用到颜色,这里用Scalar结构表示颜色参数。作图相关的函数有circle、clipLine、ellipse、ellipse2Poly、line、rectangle、polylines、类LineIterator。填原创 2011-11-28 15:49:11 · 8362 阅读 · 0 评论 -
OpenCV学习笔记(十八)——图像的各种变换(cvtColor*+)imgproc
imgproc是OpenCV一个比较复杂的lib,我是分开介绍的,之前介绍过了滤波器、直方图、结构分析和形状描述三节,这次介绍一下图像的变换,OpenCV对于图像的变换又可分为几何变换和其他的变换,我这节先介绍一下其他的变换。这部分的函数包括adaptiveThreshold,对图像进行自适应的阈值操作。相应的也有更一般常用的阈值操作函数threshold。这里还是详细介绍一下cvtC原创 2011-11-25 09:40:41 · 61203 阅读 · 9 评论 -
OpenCV学习笔记(十七)——运动分析和物体跟踪Video
这个库中相关的函数有calcOpticalFlowPyrLK、calcOpticalFlowFarneback、estimateRigidTransform、updateMotionHistory、calcMotionGradient、calcGlobalOrientation、segmentMotion、CamShift、meanShift;还有卡尔曼滤波器类KalmanFilter,类内成员函原创 2011-11-08 17:33:41 · 20911 阅读 · 13 评论 -
OpenCV学习笔记(二十)——手势识别
最近也在玩手势识别,资料找了很多,基本可以分为静态手势识别和动态手势识别,先弄个简单的静态手势识别给大家看看。基本流程如下:先滤波去噪-->转换到HSV空间-->根据皮肤在HSV空间的分布做出阈值判断,这里用到了inRange函数,然后进行一下形态学的操作,去除噪声干扰,是手的边界更加清晰平滑-->得到的2值图像后用findContours找出手的轮廓,去除伪轮廓后,再用convexHul原创 2011-11-02 10:25:34 · 46711 阅读 · 50 评论 -
OpenCV学习笔记(十九)——浅尝contrib
contrib为最新贡献但不是很成熟的函数库。作为最新的东西,就更有价值进行庖丁解牛了,我来也。首先介绍一个CvAdaptiveSkinDetector类。该类的功能是自适应的皮肤检测。分析了一下代码,其构造函数的输入参数有两个,samplingDivider样本分类,morphingMethod为变形方法。该类的关键函数为process函数,该函数先将输入图像由RGB转换为HSV空间,Hue原创 2011-11-01 18:37:30 · 12250 阅读 · 1 评论 -
OpenCV学习笔记(十五)——摄像机的标定和3D重建calib3D
先简单回顾一下计算机视觉的知识。这里研究生的摄像机模型都是针孔摄像机,摄像机的标定问题是CV领域的一个入门级的问题,初学摄像机标定时会被各种坐标系弄晕,这里再介绍一下,常提到的坐标系有四个:世界坐标系(Ow,以空间一点为原点)、摄像机坐标系(Oc以小孔即光心为原点)、图像物理坐标系(O1以像平面中心为原点)、图像像素坐标系(O以像平面左下角为原点)。这样再看相关资料的时候就不会混了吧,这里再介绍一原创 2011-10-27 10:24:40 · 52434 阅读 · 9 评论