18 caimouse

尚未进行身份认证

网名是caimouse

等级
TA的排名 25

在OpenCV里Shi-Tomasi角检测

目标:学习Shi-Tomasi角检测,cv.goodFeaturesToTrack()函数。理论:在前面的文章学习过Harris角检测,到1994年时J.Shi和C.Tomasi对这个角检测算法进行了改进,发表了论文《GoodFeaturestoTrack》,在论文里说明使用两个特征值中较小的一个大于最小阈值,公式如下:用这个公式替代Harris角公式:...

2019-10-20 12:05:40

在OpenCV里Harris角检测2

Opencv中的Harris角点检测Opencv中有一个函数cv2.cornerHarris()用来实现这个算法,参数是:src-输入图片,需要灰度图且类型float32blockSize-是角点检测考虑的邻域大小ksize-Sobel所用参数k-Harris检测器中的自由参数dst返回值:输入图像中的角点在输出图像中由局部最大值表示。如下面的例子...

2019-10-19 18:14:35

在OpenCV里Harris角检测

前面学习了很多关于图像的内容,以及变换,那么你有没有问过自己这样一个问题,什么才是图像的特征?如果我们把一个图像进行分割成一小块一小块的,然后打乱之后再想拼到一起,会寻找什么的规律呢?一般情况之下是找对应的条纹,边缘线等,其实最容易确定一般是有十字交叉的线条,因为这样交叉线条组成了角,而角的两条边具有稳定性,它不能随便旋转,如果旋转了就与别的对应不上了。因此在一幅图像里,最具有代表性的特征就是角。...

2019-10-19 16:34:01

在OpenCV里使用GrabCut算法抽取前景

前面学习过分水岭算法来分离背景与前景,现在来学习另一个标记算法GrabCut,它也是通过标记来抽取前景的算法。这个算法与分水岭算法标记不一样,比如只要简单地标记一个前景的方框,就可以抽取出来,不过计算量就有点大了。如下图:在这里使用红色的矩形把中间的烧鸭选出来,就这样就可以把它放到OpenCV里的函数grabCut去处理,就会把烧鸭分离出来,既然分离出来了,你就可以进行各种处理了。整个代码...

2019-10-18 11:42:29

在OpenCV里实现分水岭算法

目标:学习基于标记的图像分割算法,又叫做分水岭算法,以及使用cv.watershed()函数。理论:任何灰度图像都可以看作是一个地形表面,高强度表示山峰和丘陵,低强度表示山谷。你开始用不同颜色的水(标签)填满每个孤立的山谷(局部最小值)。随着水位的上升,根据附近的山峰(坡度),来自不同山谷的水,显然是不同颜色的水会开始融合。为了避免这种情况,你要在水融合的地方设置屏障。当你继续补充水...

2019-10-18 09:36:04

在OpenCV里实现模板匹配

目标:使用模板匹配方法在图片里寻找目标对象,学会使用cv.matchTemplate(),cv.minMaxLoc()函数模板匹配算法是从一个大图像里找到感兴趣的目标对象,OpenCV提供函数cv.matchTemplate()来实现相关的功能。模板匹配的原理其实很简单,就是不断地在原图中移动模板图像去比较,有6种不同的比较方法:平方差匹配CV_TM_SQDIFF:用两者的平方差来...

2019-10-17 11:48:52

在OpenCV里为什么拉普拉斯变换是高通滤波

大家学习了拉普拉斯变换之后,老是喜欢问为什么拉普拉斯变换是高通滤波(HPF)?在这里通过傅里叶变换来研究一下这些卷积核的本质,就可以清楚地了解它们到底是什么样类型的滤波。下面来把所有卷积核构造出来,然后每个都进行傅里叶变换,再查看它们的频谱图。例子如下:#python3.7.4,opencv4.1#蔡军生https://blog.csdn.net/caimouse/article...

2019-10-17 10:32:25

在OpenCV里Numpy傅里叶变换

前面学习使用OpenCV里的函数实现傅里叶变换,其实Numpy里也有相应的变换,它的变换与Matlab更加接近,如果你想从matlab代码转换过来,使用它可能更加容易一些。好吧,理论就不多说了,直接来看例子:#python3.7.4,opencv4.1#蔡军生https://blog.csdn.net/caimouse/article/details/51749579#impo...

2019-10-17 09:39:28

在OpenCV里实现直方图反向投影算法

目标:理解二维直方图投影算法理论本文算法来源于MichaelJ.Swain,DanaH.Ballard写的论文《Indexingviacolorhistograms》,论文分为两个部分,前面一部分详细描述了颜色直方图以及通过颜色直方图交叉来实现对象鉴别。可以实现对象背景区分、复杂场景中查找对象、不同光照条件影响等。这种方法对背景像素变换可以保持稳定性、同时对尺度变换...

2019-10-16 17:52:24

在OpenCV里实现二维直方图

目标:怎么样实现二维直方图在前面我们学习过一维直方图,也有应用它来解决过很多问题。但是没有使用过二维直方图,那么它是怎么样实现,以及有什么作用呢。本文就来解决这些问题。在一维直方图里只关注了一个特征:灰度值。在二维直方图里,将要考虑两个特征,一般情况就是采用彩色图里的色调(H)和饱和度(S)。二维直方图主要应用在反向投影方面。使用OpenCV实现二维直方图跟计算一维直方图是...

2019-10-16 12:03:10

在OpenCV里实现部分图像的直方图

在前面计算直方图时,总是计算整个图像的直方图,有没有办法计算部分区域的直方图呢?这时要使用函数:hist=cv.calcHist(images,channels,mask,histSize,ranges[,hist[,accumulate]])在这里要使用mask参数,就可以计算部分图像的直方图了。例子如下:#python3.7.4,opencv4.1#蔡军生htt...

2019-10-16 10:23:05

在OpenCV里轮廓层级的说明

目标:学习contours,hierarchy=cv.findContours(...)函数中的hierarchy层次关系。在前面我们学习了很多关于轮廓的函数,发现使用cv.findContours()函数时,要向这个函数输入一个参数cv.RETR_EXTERNAL、cv.RETR_LIST、cv.RETR_CCOMP或者cv.RETR_TREE,这个参数有什么用呢?同时在调用这个函...

2019-10-16 09:07:25

在OpenCV里图像外形的比较

在图形里经常会用到比较两个图形的相似程度,因为这是目标识别的一种方法,比如轮胎是圆的,那么就可以拿一个圆来与轮胎的外形进行比较,如果相似度比较高,就有可能是轮胎。在OpenCV里使用cv.matchShapes()函数来进行比较,这个函数返回的值越低,说明匹配越好。其实它是使用图像Hu矩来实现的。对于形状匹配来说,我们希望计算出来的矩具有平移不变性,旋转不变性,尺度不变性,Hu矩就可以满足这一要求...

2019-10-15 11:15:41

在OpenCV里图像上的点与轮廓的测试

前面学习轮廓一些函数,接着继续学习图像上一点与轮廓的关系,主要使用cv.pointPolygonTest函数:dist=cv.pointPolygonTest(cnt,(50,50),True)这行代码就是表示点(50,50)与轮廓cnt的最近距离。pointPolygonTest函数主要用来判断点与边缘最近的距离,如果第三个参数设置为True,返回数据表示点与边缘的实际距离,负数表示...

2019-10-15 09:48:56

在OpenCV里凸包缺陷分析

凸包缺陷分析凸包与轮廓的任何偏差都可视为凸包缺陷。OpenCV里提供cv.convexityDefects()函数来实现凸包缺陷检测:hull=cv.convexHull(cnt,returnPoints=False)defects=cv.convexityDefects(cnt,hull)在这里参数returnPoints=False是设置为False,就是为了查...

2019-10-15 08:51:47

在OpenCV里计算轮廓的特征

目标:1)通过轮廓找出不同的特征,比如面积、周长、质心点、边缘包装盒2)学习使用轮廓函数图像矩(Imagemoments)图像识别的一个核心问题是图像的特征提取,简单描述即为用一组简单的数据(数据描述量)来描述整个图像,这组数据月简单越有代表性越好。良好的特征不受光线、噪点、几何形变的干扰,图像识别技术的发展中,不断有新的描述图像特征提出,而图像不变矩就是其中一个。从...

2019-10-14 17:36:56

在OpenCV里轮廓怎么样省内存

目的:1)理解什么是轮廓2)学习查找轮廓3)明白cv.findContours(),cv.drawContours()的使用什么是轮廓轮廓可以简单地解释为连接所有连续点(沿边界)的曲线,有相同的颜色或者灰度。轮廓在形状分析、对象检测和对象识别中非常有用。为了得到好的轮廓,一般使用二值化图像,因此在处理之前一般使用阈值分割或者canny边缘处理。在OpenCV里,寻找...

2019-10-14 10:40:15

在OpenCV里生成图像金字塔

今天介绍图像处理邻域中比较常用的一种方法,imagepyramid,也叫图像金字塔。就是将图像进行一层一层的下采样,图像金字塔是为了构建图像的多尺度,让模型能够更好的适应图像的尺度变化,图像金字塔可以广泛应用于图像识别,目标检测,还有光流配准,块匹配都能看到它的身影。图像金字塔主要有两种,一种是高斯金字塔,gaussianpyramid,另外一种是拉普拉斯金字塔,LaplacianPyra...

2019-10-14 09:23:42

在OpenCV里数据类型不对导致边缘消失

在OpenCV里,有时候使用不对的数据类型,比如cv.CV_8U或np.uint8时,可能会出错的,下面就来举一个例子,如下:#python3.7.4,opencv4.1#蔡军生https://blog.csdn.net/caimouse/article/details/51749579#importnumpyasnpimportcv2frommatplotlibi...

2019-10-13 18:15:16

在OpenCV里颜色空间的转换

颜色空间(Colorspace)也称彩色模型(又称彩色空间或彩色系统)它的用途是在某些标准下用通常可接受的方式对彩色加以说明。颜色空间从提出到现在已经有上百种,大部分只是局部的改变或专用于某一领域。科学研究中有不少逻辑性等方面比HSХ更高的颜色空间。用下面的代码,就可以获得当前OpenCV支持的所有颜色空间:>>>importcv2ascv>>>...

2019-10-13 14:58:27

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024超级勋章
    1024超级勋章
    授予原创文章总数达到1024篇的博主,感谢你对CSDN社区的贡献,CSDN与你一起成长。
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周上午根据用户上周周三的博文发布情况由系统自动颁发。