OpenCV
文章平均质量分 77
yang_xian521
爱好篮球
展开
-
OpenCV学习笔记(六十二)——《OpenCV Computer Version with Python》阅读摘要
现在python火啊,每次OpenCV自带的ml模块都让我直呼坑爹,索性准备用python来做OpenCV后期的机器学习算法的处理。于是赶紧拿起这本书读读。适合OpenCV和python都有一定基础的。。。。由于都比较熟悉这两个东西,我阅读之前比较关心的只有几个问题,具体的应用实例没有仔细看。1.如何在python中安装opencv2.OpenCV的Mat数据结构能否方便的转换成num原创 2014-08-30 08:29:19 · 11802 阅读 · 5 评论 -
OpenCV学习笔记(五十一)——imge stitching图像拼接stitching
stitching是OpenCV2.4.0一个新模块,功能是实现图像拼接,所有的相关函数都被封装在Stitcher类当中。这个类当中我们可能用到的成员函数有createDefault、estimateTransform、composePanorama、stitch。其内部实现的过程是非常繁琐的,需要很多算法的支持,包括图像特征的寻找和匹配,摄像机的校准,图像的变形,曝光补偿和图像融合。但这些模块的原创 2012-05-22 17:26:49 · 69818 阅读 · 87 评论 -
OpenCV学习笔记(一)——安装配置、第一个程序
决心开始研究OpenCV。闲言少叙,sourceforge网站最近的版本是2011年8月的OpenCV2.3.1,下载安装,我这里使用的开发环境是vs2008,网上搜了一下配置的教程,与之前的几个OpenCV版本的配置过程大体相同:(教程网上很多,知之为知之,不知百度之,我这里粗略再讲一下)1. 配置电脑的环境变量(Path变量)这里我的是D:\Program Files\OpenCV2.3.原创 2011-10-21 16:16:40 · 58119 阅读 · 49 评论 -
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 · 10132 阅读 · 9 评论 -
OpenCV学习笔记(十三)——模板匹配
寻找一幅图像的匹配的模板,可以在一段视频里寻找出我们感兴趣的东西,比如条形码的识别就可能需要这样类似的一个工作提取出条形码区域(当然这样的方法并不鲁棒)。而OpenCV已经为我们集成好了相关的功能。函数为matchTemplate。所谓模板匹配就是在一幅图像中寻找和模板图像(patch)最相似的区域。该函数的功能为,在输入源图像Source image(I)中滑动框,寻找各个位置与模板图像Te原创 2011-11-07 11:04:59 · 43549 阅读 · 10 评论 -
OpenCV学习笔记(五)——2.0以上版本和以下版本的数据兼容
都知道,2.0版本对之前的OpenCV数据结构进行了大幅度的修改。但对之前版本的兼容是一个很重要的事情。这节就主要讨论这个问题首先来看一下2.0版本对之前版本的进行了哪些修改1.采用了新的数据结构Mat作为图像的容器,取代了之前的CvMat和lplImage,这个改动不是太复杂,只需适应一下新东西,而且可以自由转换Mat I;IplImage pI = I;CvMat mI = I原创 2011-10-24 09:07:26 · 12489 阅读 · 0 评论 -
OpenCV学习笔记(三)——Mat,图像的新容器
自从版本2.0,OpenCV采用了新的数据结构,用Mat类结构取代了之前用extended C写的cvMat和lplImage,更加好用啦,最大的好处就是更加方便的进行内存管理,对写更大的程序是很好的消息。需要注意的几点:1. Mat的拷贝只是复制了Mat的信息头,数据的指针也指向了被拷贝的数据地址,而没有真正新建一块内存来存放新的矩阵内容。这样带来的一个问题就是对其中一个Mat的数据操作原创 2011-10-21 20:48:05 · 38360 阅读 · 12 评论 -
OpenCV学习笔记(十一)——谈谈像素的类型和对Templates的限制使用
Templates是c++的一个很强大的特征,可以是数据结构更加安全高效。但也会增加编译时间和代码的长度,当函数被频繁调用的时候便步那么高效,所以在目前的OpenCV版本不推荐过多的使用templates。矩阵元素可以是如下类型中的一种:• 8-bit unsigned integer (uchar)• 8-bit signed integer (schar)• 16-bit unsi原创 2011-10-25 20:34:34 · 7808 阅读 · 1 评论 -
OpenCV学习笔记(五十)——Algorithm类介绍(core)
刚开始学习新的2.4.0,大概看了一遍使用手册,还是有些失望的,很多章节还是2.3.1的内容,文档上的代码也是漏洞很多。这里就简单介绍一下Algorithm这个新的基类。本来以为这部分是一个新模块的,看了referenceManual后才知道它只是一个基类,集成了一些相对复杂的算法,比如BM算法等立体匹配算法,前景背景分离的算法,光流法等模块都集成在其中。类内成员函数主要有get、set、writ原创 2012-05-04 13:25:03 · 29922 阅读 · 11 评论 -
OpenCV学习笔记(四十九)——号外!OpenCV-2.4.0 release 千呼万唤始出来
最近一直很忙,没有及时回复网友的咨询和疑问,有些回复也是寥寥数语。其实我也没有办法,面对大量的问题,有大部分都是可以通过网络和图书获得答案,我实在没有精力每个问题都详细具体的回答,希望大家谅解,还是一位老师说的好:“知之为知之,不知百度知”。前阵子有些朋友已经发现了OpenCV-2.4.0beta已经放出了,又有重大改动,很是让人兴奋,我前一篇blog——OpenCV学习笔记(三十四)——Op原创 2012-05-03 17:01:03 · 12231 阅读 · 5 评论 -
OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect
OpenCV支持的目标检测的方法是利用样本的Haar特征进行的分类器训练,得到的级联boosted分类器(Cascade Classification)。注意,新版本的C++接口除了Haar特征以外也可以使用LBP特征。先介绍一下相关的结构,级联分类器的计算特征值的基础类FeatureEvaluator,功能包括读操作read、复制clone、获得特征类型getFeatureType,分配图片原创 2011-11-16 10:58:10 · 106117 阅读 · 40 评论 -
OpenCV学习笔记(四十七)——VideoWriter生成视频流highgui
首先要先纠正个误区,我见有人用OpenCV做多媒体开发,真的是很搞笑,OpenCV这东西再强大,这方面也不行的,之所以把视频读取写入这部分做的强大一些,也是为了方便大家做视频处理的时候方便些,而且这部分也是基于vfw和ffmpeg二次开发的,功能还是很弱的。一定要记住一点,OpenCV是一个强大的计算机视觉库,而不是视频流编码器或者解码器。希望大家不要走入这个误区,可以把这部分简单单独看待。目前,原创 2012-04-09 16:38:09 · 120219 阅读 · 41 评论 -
OpenCV学习笔记(四)——新版本的数据结构core
2.0新版本对数据结构进行了大幅修改:定义了DataType类定义了Point_模板类,取代了之前版本的CvPoint、CvPoint2D32f定义了Point3_模板类,取代了之前版本的CvPoint2D32f定义了Size_模板类,取代了之前版本的CvSize和CvSize2D32f定义了Rect_模板类,取代了之前版本的CvRectRotatedRect模板类,T原创 2011-10-26 09:09:46 · 21615 阅读 · 7 评论 -
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 · 49538 阅读 · 32 评论 -
OpenCV学习笔记(十八)——图像的各种变换(cvtColor*+)imgproc
imgproc是OpenCV一个比较复杂的lib,我是分开介绍的,之前介绍过了滤波器、直方图、结构分析和形状描述三节,这次介绍一下图像的变换,OpenCV对于图像的变换又可分为几何变换和其他的变换,我这节先介绍一下其他的变换。这部分的函数包括adaptiveThreshold,对图像进行自适应的阈值操作。相应的也有更一般常用的阈值操作函数threshold。这里还是详细介绍一下cvtC原创 2011-11-25 09:40:41 · 61124 阅读 · 9 评论 -
OpenCV学习笔记(四十四)——初探GPU
好久没有更新啦,感觉最近没有什么特别的收获值得和大家分享,还是有些懒,TLD结束了也没有写个blog做总结。还是和大家分享一下OpenCV的一个大家很少接触的模块吧——GPU。这个部分我接触的也是很少,只是根据教程和大家简单交流一下,如果有高手有使用心得,欢迎多多批评。OpenCV的GPU模块只支持NVIDIA的显卡,原因是该部分是基于NVIDIA的CUDA和NVIDIA的NPP模块实现的。而原创 2012-02-13 14:12:32 · 43081 阅读 · 27 评论 -
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 · 38268 阅读 · 54 评论 -
OpenCV学习笔记(五十五)——用OpenCV做人脸识别和性别识别contrib
人脸识别的故事说也说不完,调研的事还是交给大家吧。这里说的是用OpenCV做人脸识别。因为是真正的人脸识别,不是搞笑娱乐的东西,所以数据库一定要强大的,推荐个网站http://www.face-rec.org/databases/。这里有最全的人脸库的概述,希望大家能找到自己需要的人脸库(PS:我现在特别需要一个3d的人脸库,不知道哪位大侠知道如何free获取,或者愿意共享给我那更是极好的了,原创 2012-07-15 11:52:46 · 66185 阅读 · 29 评论 -
OpenCV学习笔记(五十九)——marker检测识别"Master OpenCV"chp.2
第二章原本是讲如何将基于标定的增强现实在ios平台实现,包括以下4个方面:1、在ios平台建立opencv工程2、Marker检测识别3、摄像机标定及Marker姿态估计4、在Marker基础上渲染一个3维虚拟物体这里面第一部分是IOS平台的开发,我不是太关注,略去;第四部分是基于OpenGL的3维虚拟物体建立,也是基于IOS平台,因为第三章里还要用到OpenGL,这里留着第三原创 2013-01-30 12:24:12 · 32624 阅读 · 15 评论 -
OpenCV学习笔记(五十八)——读《Master OpenCV》初感
好久没更新这个系列了。去年12月初的时候就知道出了一本OpenCV的新书《Master OpenCV with Practical Computer Vision Projects》,一直没来得及看,春节前也不想做什么任务,就把这书读一读吧。大概看了一下,和OpenCV的其他书对比了一下,感觉如下:《Learning OpenCV》是一本经典的老书了,是一个入门教材,读完可以知道OpenCV能原创 2013-01-21 17:42:33 · 16638 阅读 · 14 评论 -
OpenCV学习笔记(六十一)——建立支持OpenGL的OpenCV工程“Master OpenCV”chp.3
从OpenCV2.4beta版本,OpenGL就可以有接口到highgui的模块中了。结合Master OpenCV第三章的阅读,这里说说如何在OpenCV的显示中嵌入OpenGL的虚拟物体。要注意的一点:如果想使OpenCV支持OpenGL,不能使用预编译好的library,要用cmake rebuild工程,注意ENABLE_OPENGL = YES,(在2.4.2版本中,默认ENABLE原创 2013-01-23 18:01:05 · 25021 阅读 · 24 评论 -
OpenCV学习笔记(四十八)——PCA算法实现core
PCA(principal component analysis,主成分分析),我想是大家用的最多的降维手段,对于PCA的理解,我想大神们都各有各的绝招,可以应用的场合也非常多。下面就介绍一下OpenCV中PCA这个类,因为常用,所以这个类相对OpenCV而言显得比较独立,放在了core这部分中。PCA类的成员函数包括构造函数、运算符重载()、project、backProject这几个函数,原创 2012-04-10 20:41:10 · 27631 阅读 · 27 评论 -
OpenCV学习笔记(四十六)——FAST特征点检测features2D
特征点检测和匹配是计算机视觉中一个很有用的技术。在物体检测,视觉跟踪,三维常年关键等领域都有很广泛的应用。这一次先介绍特征点检测的一种方法——FAST(features from accelerated segment test)。很多传统的算法都很耗时,而且特征点检测算法只是很多复杂图像处理里中的第一步,得不偿失。FAST特征点检测是公认的比较快速的特征点检测方法,只利用周围像素比较的信息就可以原创 2012-03-30 16:50:32 · 62693 阅读 · 28 评论 -
OpenCV学习笔记(五十七)——在同一窗口显示多幅图片
好久没更新blog里,看到OpenCV官网做的越来越好,心里也是很高兴的,真有些冲动将来加入到这个组织里做些事。估计2.4.3要在国庆左右跟大家见面,让我们多期待一下吧。闲话少说,今天不介绍复杂的算法了,来个简单的,大家写文章做图经常用Matlab,在Matlab里经常在一个窗口里打开多幅图片。遗憾的是OpenCV没有集成这样的功能,但这难不倒大家,让我试试用ROI来解决这个问题。没啥好讲原创 2012-08-28 15:14:01 · 23194 阅读 · 17 评论 -
OpenCV学习笔记(二)——新版本模块结构
还是老话题,2.2版本对OpenCV可是进行了大刀阔斧的改革,用c++重新了大部分结构,而不是1.X版本中的c结构。这些模块包括:core——定义了基本数据结构,包括最重要的Mat和一些其他的模块imgproc——该模块包括了线性和非线性的图像滤波,图像的几何变换,颜色空间转换,直方图处理等等video——该模块包括运动估计,背景分离,对象跟踪calib3d——基本的多视角几何算法原创 2011-10-25 20:00:13 · 20490 阅读 · 6 评论 -
OpenCV学习笔记(五十四)——概述FaceRecognizer人脸识别类contrib
在最新版的2.4.2中,文档的更新也是一大亮点,refrence manual扩充了200多页的内容,添加了contrib部分的文档。contrib就是指OpenCV中新添加的模块,但又不是很稳定,可以认为是一个雏形的部分。这次结合refman的阅读,介绍一下FaceRecognizer这个人脸识别类,这个类也是2.4.2更新日志里着重强调过的更新,配套的文档也是相当充实。这个类的基类也是Algo原创 2012-07-11 15:11:29 · 77419 阅读 · 52 评论 -
OpenCV学习笔记(五十六)——InputArray和OutputArray的那些事core
看过OpenCV源代码的朋友,肯定都知道很多函数的接口都是InputArray或者OutputArray型的,这个接口类还是很强大的,今个就来说说它们的那些事。InputArray这个接口类可以是Mat、Mat_、Mat_、vector、vector>、vector。也就意味着当你看refman或者源代码时,如果看见函数的参数类型是InputArray型时,把上诉几种类型作为参数都是可以的。原创 2012-07-17 14:37:49 · 67823 阅读 · 21 评论 -
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 · 37160 阅读 · 25 评论 -
OpenCV学习笔记(四十三)——存取像素值操作汇总core
在上一讲OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年里,对Mat内数据的各种读写操作进行了速度的比较,都是我自己想到的方法,感觉不够系统,这次整理了下思路,参考了文献,把能想到的方法进行了汇总,希望能对大家有所帮助。1.存取单个像素值最通常的方法就是img.at(i,j) = 255;img.at(i,j)[0] = 255;如果你觉得at操原创 2012-01-06 18:36:12 · 36450 阅读 · 9 评论 -
OpenCV学习笔记(十五)——摄像机的标定和3D重建calib3D
先简单回顾一下计算机视觉的知识。这里研究生的摄像机模型都是针孔摄像机,摄像机的标定问题是CV领域的一个入门级的问题,初学摄像机标定时会被各种坐标系弄晕,这里再介绍一下,常提到的坐标系有四个:世界坐标系(Ow,以空间一点为原点)、摄像机坐标系(Oc以小孔即光心为原点)、图像物理坐标系(O1以像平面中心为原点)、图像像素坐标系(O以像平面左下角为原点)。这样再看相关资料的时候就不会混了吧,这里再介绍一原创 2011-10-27 10:24:40 · 52327 阅读 · 9 评论 -
OpenCV学习笔记(二十一)——绘图函数core
在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数。OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的。这里就介绍一下相关的函数。在绘图函数中都会用到颜色,这里用Scalar结构表示颜色参数。作图相关的函数有circle、clipLine、ellipse、ellipse2Poly、line、rectangle、polylines、类LineIterator。填原创 2011-11-28 15:49:11 · 8330 阅读 · 0 评论 -
OpenCV学习笔记(十四)——图像结构分析与形状描述ImgProc
OpenCV支持大量的轮廓、边缘、边界的相关函数,相应的函数有moments、HuMoments、findContours、drawContours、approxPolyDP、arcLength、boundingRect、contourArea、convexHull、fitEllipse、fitLine、isContourConvex、minAreaRect、minEnclosingCircle、原创 2011-11-01 09:19:30 · 33026 阅读 · 2 评论 -
OpenCV学习笔记(二十)——手势识别
最近也在玩手势识别,资料找了很多,基本可以分为静态手势识别和动态手势识别,先弄个简单的静态手势识别给大家看看。基本流程如下:先滤波去噪-->转换到HSV空间-->根据皮肤在HSV空间的分布做出阈值判断,这里用到了inRange函数,然后进行一下形态学的操作,去除噪声干扰,是手的边界更加清晰平滑-->得到的2值图像后用findContours找出手的轮廓,去除伪轮廓后,再用convexHul原创 2011-11-02 10:25:34 · 46613 阅读 · 50 评论 -
OpenCV学习笔记(八)——图像处理之直方图ImgProc
直方图histograms也是图像处理中经常用到的一种手段。新版本对直方图不再使用之前的histogram的形式,而是用统一的Mat或者MatND的格式来存储直方图,可见新版本Mat数据结构的优势。先介绍下其相关的函数calcHist、calcBackProject、compareHist、EMD、equalizeHist。除了这几个常用的函数以为,还有一些c函数写的直方图类CvHistogr原创 2011-11-02 18:18:24 · 29863 阅读 · 7 评论 -
OpenCV学习笔记(三十)——解开VideoInput面纱highgui
最近做一个东西,摄像头使用的高清摄像头,采集出来的视频是D1格式(720*480)。使用VideoCapture发现速度很忙,网上的朋友说VideoCapture提供的读写功能采用VFW,效率低下且有些格式支持不好。而 OpenCV 2.0 内置了videoInput Library,可以自动在VFW和DirectShow间切换。videoInput是老外写的功能强大的开源视频处理库。是一个第三方原创 2011-11-25 17:27:07 · 16113 阅读 · 4 评论 -
OpenCV学习笔记(二十二)——粒子滤波跟踪方法
粒子滤波法是指通过寻找一组在状态空间传播的随机样本对概率密度函数进行近似,以样本均值代替积分运算,从而获得状态最小方差分布的过程。对于粒子滤波跟踪方法,这里有一篇很浅显易懂的博客,我分享给大家http://www.cnblogs.com/yangyangcv/archive/2010/05/23/1742263.html。他的工作也是参考Rob Hess的程序做的,感谢老外的开源精神,我看原创 2011-11-04 17:32:44 · 38250 阅读 · 22 评论 -
OpenCV学习笔记(七)——图像处理之滤波器ImgProc
先介绍几个最基本的核滤波器相关的类2D图像滤波器基础类BaseFilter:dst(x,y) = F(src(x,y), src(x+1,y)... src(x+wdith-1,y), src(y+1,x)... src(x+width-1, y+height-1) ); 相关的调用函数为getLinearFilter、getMorphologyFilter单行核滤波器基础类BaseRow原创 2011-10-26 14:31:19 · 21743 阅读 · 3 评论 -
OpenCV学习笔记(十九)——浅尝contrib
contrib为最新贡献但不是很成熟的函数库。作为最新的东西,就更有价值进行庖丁解牛了,我来也。首先介绍一个CvAdaptiveSkinDetector类。该类的功能是自适应的皮肤检测。分析了一下代码,其构造函数的输入参数有两个,samplingDivider样本分类,morphingMethod为变形方法。该类的关键函数为process函数,该函数先将输入图像由RGB转换为HSV空间,Hue原创 2011-11-01 18:37:30 · 12205 阅读 · 1 评论 -
OpenCV学习笔记(二十九)——视频前景的提取Video
视频捕捉的对象中,背景通常保持不变。一般分析中关注移动的前景物体,威力提取出前景物体,需要建立背景的模型,将模型和当前帧进行比对检测前景物体。前景提取应用非常广泛,特别是在智能监控领域中。如果有不含前景物体的背景图片,提取前景的工作相对容易,只需要比对当前帧和背景图片的不同,调用函数absdiff实现。但是大多数情况,获得背景图片是不可能的,比如在复杂的场景下,或者有光线条件的变化。因此,就需原创 2011-11-19 16:54:31 · 38442 阅读 · 31 评论 -
OpenCV学习笔记(十)——图形交互和媒体接口HighGUI
OpenCV提供一个功能强大的UI接口,可以在MFC、Qt、WinForms、Cocoa等平台下使用,甚至不需要其他的平台。新版本的HighGUI接口包括:创建并控制窗口,该窗口可以显示图片并记录其内容为窗口添加了trackbars控件,可以方便利用鼠标进行控制而不是之前版本的只能利用键盘读写硬盘和内存的图片读取摄像头的视频、读写视频文件先来介绍UI,包括函数createTra原创 2011-10-24 17:11:55 · 22077 阅读 · 5 评论