OpenCV2 计算机视觉编程手册 学习笔记
文章平均质量分 78
Coulson_Zhao
这个作者很懒,什么都没留下…
展开
-
OpenCV2编程手册笔记之 2.4迭代器遍历图像
迭代器是一种极为方便的可以遍历数组或集合的方法,使用opencv的自带的Mat中的迭代器,可以方便的进行遍历数组操作。一般来讲,更喜欢使用Mat_模板类种自带的迭代器。也就是说,在知道图像类型的情况下(例如彩色图片就是cv::Vec3b),直接就可以定义图像的首地址和尾地址,再逐个遍历进行更改代码说明吧:void colorReduce(cv::Mat &image, int di原创 2017-09-03 19:02:34 · 278 阅读 · 0 评论 -
OpenCV2编程手册笔记之 6.3中值滤波器
低通滤波器是一种线性滤波器,而今天要说的是一种非线性滤波器——中值滤波器 中值滤波器在去除椒盐噪声的时候尤其有用,我们使用创建过的一个椒盐图像作为例子 opencv中的medianBlur函数可以简单的帮我们完成这个操作 void medianBlur( InputArray src, OutputArray dst, int ksize ); 这里ksize为核矩原创 2017-09-11 19:18:30 · 249 阅读 · 0 评论 -
OpenCV2编程手册笔记之 2.2存取像素值
。。。原创 2017-09-02 23:48:47 · 280 阅读 · 0 评论 -
OpenCV2编程手册笔记之 2.3指针遍历图像
最开始看书的时候,对颜色削减总是不明白,最近又看了看,一下是自己的一点想法彩色图像对于每个像素都有三个通道,每个通道都是由八位uchar数构成。由于八位uchar型数据就是2^8,也就是256中数据情况,从0到255因此彩色图像的每个像素可能的色彩就有256*256*256种可能(三个通道)那么,自然就想到降低这么多色彩可能性以降低分析复杂度。一种方法就是将几种颜色看成一种颜色原创 2017-09-03 15:25:12 · 335 阅读 · 0 评论 -
OpenCV2编程手册笔记之 6.5计算图像的拉普拉斯变换
拉普拉斯是一种基于图像导数的高通线性滤波器,它使用计算二阶导数的方法计算图像的弯曲度。 拉普拉斯算法在opencv中是一种比较简单的函数,但是我们要尝试使显示的图像更加清楚易于观察。 在这里,我们先用最简单的方法解释一下拉普拉斯算子的原理: 不想看的话(我写的也渣)直接跳过就好啦 -----------------------原理分割线---------原创 2017-09-20 21:02:34 · 937 阅读 · 0 评论 -
OpenCV2编程手册笔记之 8.2检测Harris角点
在检测兴趣点的时候,角点可以作为一个有趣的方案。这就是因为角点在图像中几乎随处可见。 在这里,我们将用Harris角点检测方案进行检测。 我们在这里选择声明一个HarrisDetector类进行角点的检测,我们先说一下它的代码实现。 第一部分是计算Harris值//Harris 计算 cv::cornerHarris(image, cornerStren原创 2017-10-07 14:04:52 · 432 阅读 · 0 评论 -
OpenCV2编程手册笔记之 8.3检测FAST特征
Harris算法的复杂度较为高,这次中,我们采用另一种算法来用较小的复杂度来检测角点。 我们采用OpenCV2的通用接口来创建任意的特征检测器,我们FAST(Features from Accelerated Segment Test)检测器,这种算法最主要的优点就是它的检测速度非常快速。 由于代码十分简单,我们直接说一下它的数学原理。 FAST的数学原理从H...原创 2017-10-09 13:56:13 · 265 阅读 · 0 评论 -
OpenCV2编程手册笔记之 7.4用直线拟合一组点
在一些应用中,我们不仅需要检测直线,还需要获取直线位置和方向的精确估计,这次我们将介绍最贴合一组点的直线。原创 2017-09-27 19:24:30 · 548 阅读 · 0 评论 -
OpenCV2编程手册笔记之 6.2使用低通滤波器
低通滤波器的意义在于降低图像变化的幅度,一种方案是将每个像素替换为相邻像素的平均值。这样,快速的强度变化就能转化为平缓的过渡。 常见的函数有两个,首先介绍 cv::blur void blur( InputArray src, OutputArray dst, Size ksize, Point anchor = Point(-1,原创 2017-09-10 08:51:55 · 342 阅读 · 0 评论 -
OpenCV2编程手册笔记之 7.5提取连通区域轮廓
图像中包含着物体的表现,我们这一节就要了解如何在一幅图像中选定物体处在的大概的位置。 这一节中我们将使用findContours和drawContours作为框选图像位置的操作方法 由于findContours只能在边界已经很明显的图像上(一般是二值图像)找寻物体的边缘,因此我们先需要对图像做一些预处理。 我们定义一个Connected类来进行对图像的预处理,在这里我原创 2017-10-01 17:48:02 · 659 阅读 · 0 评论 -
OpenCV2编程手册笔记之 7.6计算连通区域的形状描述符
在这次的博客介绍中,我们将讨论OpenCV中可用的形状描述符。原创 2017-10-01 23:43:48 · 571 阅读 · 0 评论 -
OpenCV2编程手册笔记之 10.2读取视频序列
视频就是很多张图像(帧)快速的播放,因此,处理视频就相当于对每一帧进行操作。一旦可以读取每一帧,所有之前提到的图像处理函数就可以对每一帧进行应用,从而达到处理图像的目的。原创 2017-10-10 12:12:14 · 249 阅读 · 0 评论 -
OpenCV2编程手册笔记之 10.3处理视频帧
对视频的处理其实很简单,就是对图像的处理,但我们要让对视频的处理看着十分清晰,不会造成混乱的感觉,就要定义一个视频处理的类VideoProcess 在这个类中,我们要定义视频,视频中的帧,处理后的结果,视频的延迟作为类的属性 定义获得视频,运行视频帧,帧处理,显示图像的方法class VideoProcess{private: double delay; cv::M原创 2017-10-12 18:41:58 · 400 阅读 · 0 评论 -
OpenCV2编程手册笔记之 5.6GrabCut提取前景
相比分水岭算法,GrabCut算法不是基于数学形态学,虽然相比分水岭算法计算的复杂度更高,但是其产生的结果更加精确。适用范围:从静态图像中提取前景物体。原创 2017-09-01 14:56:50 · 459 阅读 · 0 评论 -
OpenCV2编程手册笔记之 7.3使用霍夫变换检测直线
在检测边缘了解后,我们介绍一种用来检测直线的方法,那就是霍夫变换,这是一个检测直线的经典算法。 霍夫变换的数学原理较为复杂,我们先在应用层面介绍霍夫变换: void HoughLines( InputArray image, OutputArray lines, double rho, double theta, int原创 2017-09-26 16:50:43 · 564 阅读 · 0 评论 -
OpenCV2编程手册笔记之 2.8定义感兴趣区域(ROI)
在这里,我们要执行一次插入命令,合并两张大小不同的图片。由于add函数只能执行大小一样图片的结合,因此我们先要在较大的图片上定义一块和小图片同样大小的区域,然后再将这二者叠加。方法一:直接选取感兴趣区域,这种方法之所以可行就在于ROI区域和他的父图像都指向同一块内存区域。也就是说,选定的ROI区域就是原图像的一个部分指针,对ROI进行操作就是对原图像进行操作。代码实现:原创 2017-09-03 19:36:50 · 318 阅读 · 0 评论 -
OpenCV2编程手册笔记之 4.2计算图像的直方图
在一个单通道的灰度图像中,每个像素的值都介于0(黑色)——255(白色)之间根据这点,灰度图像的直方图拥有256个条目,这些条目也称之为容器。现在,我们以灰度形式读取一张图片,并且定义一个直方图处理类来方便的处理直方图操作。在这个类中,我们先声明变量并编写构造函数:private: int histSize[1]; float hranges[2];原创 2017-09-04 10:36:22 · 447 阅读 · 0 评论 -
OpenCV2编程手册笔记之 4.2计算图像的直方图(彩色)
上一节中我们说到了计算二值图像的直方图。这次,我们说一下彩色图像的直方图如何绘制灰度的图那篇文章想看的话,我有一篇拙文http://blog.csdn.net/coulson_zhao/article/details/77834310同样,设置一个视频处理类ColorHistogram,内部同样定义这些变量: int histSize[3]; //项(容原创 2017-09-05 13:34:40 · 419 阅读 · 0 评论 -
OpenCV2编程手册笔记之 4.3查找表修改图像外观
在一张灰度图像的直方图中,显示了图像灰度分配的范围和强度,我们利用这个信息,就可以做到修改,甚至提高某一个图像的质量。 实现方法: 使用查找表,查找表是一个简单的一对一(一对多)函数,在这个查找表中定义了如何将原始的像素转换成新的像素 现在,我们先来看看如何利用查找表修改图像的外观,在这里我们把一张灰度图变成他的负片 继续我们在4.2中的工作,在Histog原创 2017-09-06 07:46:05 · 399 阅读 · 0 评论 -
OpenCV2编程手册笔记之 6.4高通滤波器检测边缘
在这次中,我们将使用和前两次相反的变换,即为采取高通滤波器进行边缘检测原创 2017-09-12 23:28:05 · 594 阅读 · 0 评论 -
OpenCV2编程手册笔记之 4.4直方图均衡化
在我上一篇文章中,着重介绍了通过提高对比度的方法提升图像质量。但是,在多数情况下,图像的缺陷主要体现在某些颜色值的出现频率过高。 因此,我们采取直方图均衡化的方法对过高的颜色值进行平均化操作,以达到图像增强的目的。 在opencv中,有一个很简单的函数equalizeHist,它可以自动的为我们进行直方图均衡化的操作,如果我们想进行自己操作的话,可以选择自己定义查找表。原创 2017-09-07 15:26:07 · 339 阅读 · 0 评论 -
OpenCV2编程手册笔记之 5.3形态学滤波对图像进行开闭运算
腐蚀和膨胀经过组合可以定义出新的运算,例如开运算和闭运算在使用morphologyEx做运算时,应用cv::MORPH_CLOSE就可以定义函数中的选项值原创 2017-08-30 17:08:24 · 342 阅读 · 0 评论 -
OpenCV2编程手册笔记之 5.2形态学滤波对图像进行腐蚀、膨胀运算
20170830 第一篇文章啦,写一下笔记记一下学到的东西,从这开始吧ps:就是自己的学习笔记,借鉴了好多大神的文章。。第五章的第一个内容是腐蚀和膨胀,腐蚀和膨胀都是对图像白色部分进行运算。也就是二值化之后的白色部分进行运算。最根本的原理就是用定义的核 kernel 进行卷积操作。卷积操作:将核沿着图像移动,计算核所包围的面积,并将其最大(小)值赋值给参考点,这就是卷积膨胀:卷原创 2017-08-30 15:14:01 · 480 阅读 · 0 评论 -
OpenCV2编程手册笔记之 7.2使用Canny算子检测轮廓
在之前的算法中,我们不难发现检测出的边缘存在着边缘过粗。主要边缘和次要边缘区分不清的问题,为此,我们采用Canny算子来进行解决。 Canny算子在使用上极为简单 void Canny( InputArray image, OutputArray edges, double threshold1, double threshold2原创 2017-09-25 13:02:36 · 356 阅读 · 0 评论 -
OpenCV2编程手册笔记之 5.4形态学滤波进行边缘与角点检测
形态学滤波还可以进行边缘和角点的检测边缘检测:在形态学检测边缘时,可以使用opencv库中自带的函数morphologyEx,并将其中的参数设置为MORPH_GRADIENT实现上,先定义一个MorphoFeatures类,getEdges方法通过morphologyEx函数可以很容易地得到边缘。代码如下:class MorphoFeatures{private:原创 2017-08-31 09:13:36 · 457 阅读 · 0 评论 -
OpenCV2编程手册笔记之 4.5反投影直方图以检测特定图像内容
在某一幅确定的图像中,我们定义一个感兴趣区域ROI,那么这块区域的直方图就可以看作一个概率函数,其给出的是每个像素属于该ROI的概率。 依照这种特性,我们可以利用直方图来检测特定的内容(灰度直方图) 我们的整体思路是: 在选定图片中选取一块你感兴趣的区域;得到这块区域的灰度直方图;直方图归一化;用反投影方法计算出和这块区域类似的区域。 首先,我们先使用Rec原创 2017-09-09 08:55:43 · 441 阅读 · 0 评论 -
OpenCV2编程手册笔记之 5.5分水岭算法对图像进行分割
分水岭算法可以用来快速分割图像成为同类区域原理概述:将图像视为拓扑结构的地图,均质区域就是被陡峭边缘包围的平坦盆地,因而,可以选出较为平坦的区域。分水岭分割的结果通过cv::watershed函数获取,在这里,我们创建一个WatershedSegmenter类,进行分水岭算法的封装工作。整体算法概述:在选取的图像中,我们先进行二值化操作,操作争取将前景物体最大可能性提出。之后,原创 2017-09-01 09:08:23 · 430 阅读 · 0 评论 -
OpenCV2编程手册笔记之 10.5应用光流法跟踪视频中的特征点
这次,我们用举例的方法来了解一下视频处理,我们采用上一篇博客中用到的代码,使用类继承来减少代码量 这次的目标是跟踪移动物体,我们先创建一个FeatureTrack类,它继承自VideoProcess类 在看这个类之前,我们先介绍几个函数 首先是calcOpticalFlowPyrLK,这个函数的作用原理是光流法,它输入的点(第三个参数)是图像2中的角点坐标,它将会对输原创 2017-10-13 15:40:10 · 610 阅读 · 0 评论