Opencv基于Python图像处理算法
文章平均质量分 92
OpenCV 是计算机视觉中经典的专用库,其支持多语言、跨平台,功能强大。OpenCV-Python为OpenCV提供了Python接口,使得使用者在Python中能够调用C/C++,在保证易读性和运行效率的前提下,实现所需的功能。文章写作过程中难免有所疏漏,如发现错误,希望大家指出,谢谢支持。
@DWC_DIP
每天进步一点点~~
展开
-
你对SIFT算法了解多少—原理详解与演示
这一讲将讲解图像特征匹配中的SIFT算法,全称为尺度不变性特征匹配算法(Scale Invariant Feture Transform),它是计算机视觉中最常应用的特征匹配算法之一。由于该算法是在2004年进行完善,后续在其基础上有很多改进的算法,目前用到的特征匹配算法可能不是SIFT算法本身而是改进后的算法,但是无论用什么改进的算法,其基本思想是不变的,只不过是在计算性能和效率上有所提升。下面从原理上对该算法进行...原创 2021-06-11 22:28:25 · 3523 阅读 · 0 评论 -
OpenCV基于Python霍夫圆检测—基于梯度的霍夫圆检测
基于梯度的霍夫圆检测1. 回顾与目标2. 基于梯度的霍夫圆检测2.1 问题分析2.2 基于梯度的霍夫圆检测步骤3. 基于梯度的霍夫圆检测函数HoughCircles3.1 函数HoughCircles3.2 代码演示参考资料1. 回顾与目标上一讲标准的霍夫变换对于曲线检测是一项强有力的技术,但是随着曲线参数数目的增加,造成计数器的数据结构越来越复杂,如直线检测的计数器是二维的,圆检测的计数器是三维的,这需要大量的存储空间和巨大的计算量,因此通常采用其他方法进行改进,如同概率直线检测对标准霍夫直线检测的改原创 2021-06-03 21:27:27 · 3557 阅读 · 5 评论 -
OpenCV基于Python霍夫圆检测—标准霍夫圆检测
标准霍夫圆检测1972年,R. D. Duda和P. E. Hart1提出了直线的检测方法,而且还推广到了霍夫圆的检测方法,通常称为标准的霍夫圆检测。已知圆的圆心坐标为(a,b)(a, b)(a,b),半径为rrr,则圆在xoyxoyxoy平面内的方程可表示为:(x−a)2+(y−b)2=r2(x-a)^2+(y-b)^2=r^2(x−a)2+(y−b)2=r2。那么反过来考虑一个简单的问题:已知xoyxoyxoy平面内的点(x1,y1)、(x2,y2)、(x3,y3)、...(x_1, y_1)、(x原创 2021-06-03 21:25:53 · 1105 阅读 · 2 评论 -
OpenCV基于Python霍夫直线变换
霍夫变换直线检测目标前言1. 什么是霍夫变换直线检测2. 霍夫变换直线检测原理详解3. OpenCV中的霍夫直线变换4. 概率霍夫变换5. 霍夫直线检测的优缺点6. 小结目标通过本篇文章的学习,你将学习到以下内容:霍夫变换(Hough Transform)的概念霍夫变换直线检测原理详解学习使用OpenCV的Python接口调用函数:cv.HoughLines(),cv.HoughLinesP()前言霍夫变换是一种特征检测(feature extraction),被广泛应用在图像分析(ima原创 2021-01-04 22:28:46 · 950 阅读 · 0 评论 -
OpenCV基于Python图像模板匹配
模板匹配目标前言1. OpenCV中的模板匹配2. 多对象的模板匹配3. 小结目标通过本篇文章的学习,你将学习到以下内容:使用模板匹配在图像中查找对象学习到函数:cv.matchTemplate(),cv.minMaxLoc()前言模板匹配是一种用于在较大图像中搜索和查找模板图像位置的方法。为此,OpenCV带有一个函数cv.matchTemplate()。 它只是将模板图像滑动到输入图像上(就像在2D卷积中一样),然后在模板图像下比较模板和输入图像的拼图。OpenCV中实现了几种比较方法,原创 2021-01-02 20:31:53 · 458 阅读 · 0 评论 -
OpenCV基于Python傅里叶变换及高通/低通滤波
傅里叶变换及高通/低通滤波目标前言1. Numpy中的傅里叶变换2. OpenCV中的傅里叶变换3. 为什么拉普拉斯算子是高通滤波器?附加资源目标通过本篇文章的学习,你将学习到以下内容:使用OpenCV查找图像的傅立叶变换利用Numpy中可用的FFT函数傅立叶变换的某些应用学习到函数:cv.dft(),cv.idft()前言傅立叶变换用于分析各种滤波器的频率特性。对于图像,使用2D离散傅里叶变换(DFT)查找频域。一种称为快速傅立叶变换(FFT)的快速算法用于DFT的计算。对于正弦信号原创 2021-01-01 20:55:24 · 2187 阅读 · 2 评论 -
OpenCV基于Python二维直方图
二维直方图目标前言1. OpenCV中的二维直方图2. Numpy中的二维直方图3. 绘制二维直方图3.1 使用 cv.imshow()绘制3.2 使用Matplotlib绘制4. 补充一个示例5. 总结目标在本篇文章中,我们将学习查找和绘制2D直方图,包括以下内容:OpenCV中的二维直方图Numpy中的二维直方图绘制二维直方图示例补充前言在直方图板块的第一篇文章图像直方图的查找、绘制和分析中,我们计算并绘制了一维直方图, 之所以称为一维,是因为我们仅考虑一个特征,即像素的灰度强度值。原创 2020-12-30 21:50:06 · 1065 阅读 · 1 评论 -
OpenCV基于Python直方图均衡化详析
直方图均衡化目标1. 前言2. 全局直方图均衡化(HE)3. 对比度受限的自适应直方图均衡化(CLAHE)4. 总结目标通过本篇文章的学习,你将学习到以下内容:直方图均衡化的概念,并利用它来提高图像的对比度全局直方图均衡化对比度受限的直方图均衡化1. 前言考虑这样一幅图像,它的像素值仅局限于某个特定的值范围,例如,较亮的图像将把所有像素限制在高值上。但是一幅好的图像会有来自图像所有区域的像素。因此,你需要将这个直方图拉伸到两端,这就是直方图均衡化的作用(简单来说),这通常会提高图像的对比度原创 2020-12-28 21:04:57 · 734 阅读 · 1 评论 -
OpenCV基于Python图像直方图的查找、绘制及掩码在直方图中的应用
图像直方图的查找、绘制和分析目标1. 直方图是什么2. 查找直方图目标通过本篇文章,你将学习到以下内容:使用OpenCV和Numpy函数查找直方图使用OpenCV和Matplotlib函数绘制直方图你将学习到以下函数:cv.calcHist(),np.histogram()等。1. 直方图是什么直方图是什么?你可以将直方图视为图形或绘图,从而可以总体了解图像的强度分布。它是在X轴上具有像素值(不总是从0到255的范围),在Y轴上具有图像中相应像素所占数量的图,如下图1所示。通过查看图像的直原创 2020-12-26 21:13:37 · 570 阅读 · 0 评论 -
OpenCV基于Python图像轮廓分层及其检索模式
图像轮廓分层及其检索模式目标1. 理论1.1 什么是层次结构1.2 OpenCV中的层次结构表示目标在本篇文章中,我们将学习到轮廓的层次及轮廓层次中的4种检索模式,包括以下内容:层次结构是什么?层次结构在OpenCV中的表示4种轮廓检索模式——RETR_LIST、RETR_EXTERNAL、RETR_CCOMP、RETR_TREE1. 理论在轮廓绘制及其特征文章中,我们已经讨论了与OpenCV提供的轮廓相关的几个函数,例如查找图像轮廓函数cv2.findContours()的语法格式如下原创 2020-12-24 22:07:51 · 994 阅读 · 3 评论 -
OpenCV基于Python图像轮廓——轮廓属性
轮廓属性目标1. 常见的轮廓属性1.1 长宽比1.2 范围1.3 坚实度1.4 等效直径1.5 方向1.6 掩码和像素点1.7 最大值,最小值及其位置1.8 平均颜色或平均强度1.9 极端点2. 更多属性2.1 凸性缺陷2.2 点多边形测试2.3 形状匹配目标在上一篇文章Opencv基于Python图像轮廓——轮廓绘制及其特征中,我们已经学习到了轮廓的一些特征,如质心、面积、周长等。在本篇文章,我们将继续学习到以下内容:提取一些常用的物体属性,如坚实度,等效直径,掩模图像,平均强度等图像轮廓的凸性原创 2020-12-21 17:34:03 · 1226 阅读 · 0 评论 -
Opencv基于Python图像轮廓——轮廓绘制及其特征
轮廓入门目标1. 什么是轮廓2. 如何绘制轮廓3. 轮廓近似方法目标在本篇文章中,我们将学习到以下内容:了解轮廓是什么学习查找轮廓,绘制轮廓等你将学到以下函数:cv.findContours(),cv.drawContours()1. 什么是轮廓轮廓可以简单地解释为连接具有相同颜色或强度的所有连续点(沿边界)的曲线,轮廓是用于形状分析以及对象检测和识别的有用工具。为了获得更高的准确性,请使用二进制图像。因此,在找到轮廓之前,请应用阈值或canny边缘检测。从OpenCV 3.2开始,原创 2020-12-20 15:25:56 · 11855 阅读 · 5 评论 -
OpenCV基于Python图像金字塔
图像金字塔目标1. 理论1.1 高斯金字塔目标通过本篇文章,你将学习到以下内容:学习图像金字塔使用图像金字塔创建一个新的水果“Orapple”使用功能:cv.pyrUp(),cv.pyrDown()1. 理论通常,我们过去使用的是恒定大小的图像,但是在某些情况下,我们需要使用不同分辨率的(相同)图像。例如,当在图像中搜索某些东西(例如人脸)时,我们不确定对象将以多大的尺寸显示在图像中。在这种情况下,我们将需要创建一组具有不同分辨率的相同图像,并在所有图像中搜索对象,这些具有不同分辨率的图像原创 2020-12-17 15:44:26 · 315 阅读 · 0 评论 -
OpenCV基于Python边缘检测-Canny算子
Canny边缘检测目标理论1. 非极大值抑制2. 磁滞阈值OpenCV中的Canny Edge检测目标在本篇文章中,我们将学习到以下内容:Canny边缘检测的概念OpenCV函数: cv.Canny()理论Canny Edge Detection是一种流行的边缘检测算法。它由John F. Canny提出,具有以下特点:这是一个多阶段算法,我们将经历每个阶段。具有降噪效果,由于边缘检测容易受到图像中噪声的影响,因此第一步是使用5x5高斯滤波器消除图像中的噪声。我们已经在前面的章节中看到原创 2020-12-13 22:27:08 · 691 阅读 · 0 评论 -
OpenCV基于Python图像梯度处理
图像梯度目标理论1. Sobel 和 Scharr 算子2. Laplacian 算子重要说明事项目标在本篇文章中,您将学习到如下内容:查找图像梯度,边缘学会使用以下函数:cv.Sobel(),cv.Scharr(),cv.Laplacian()等理论OpenCV提供三种类型的梯度滤波器或高通滤波器,即Sobel,Scharr和Laplacian,接下来我们来看一看吧!1. Sobel 和 Scharr 算子Sobel算子是高斯平滑加微分运算的联合运算,因此它更抗噪声。可以指定要采用的导原创 2020-12-12 21:13:44 · 553 阅读 · 0 评论 -
OpenCV基于Python图像形态学处理
图像形态学转换目标理论1. 腐蚀2. 膨胀3.开操作、闭操作3.1 开操作效果演示3.2 闭操作效果演示4. 形态学梯度5. 顶帽、底帽6. 结构元素目标在这篇文章中, 我们将学习不同的形态学操作,例如腐蚀,膨胀,开运算,闭运算,形态学梯度等。 我们将看到不同的功能,例如:cv.erode(),cv.dilate(),**cv.morphologyEx()**等。理论形态学转换是一些基于图像形状的简单操作。通常在二进制图像上执行,它需要两个输入,一个是我们的原始图像,第二个是决定操作性质的结构元素或原创 2020-12-10 18:54:34 · 457 阅读 · 0 评论 -
OpenCV基于Python图像平滑
图像平滑目标2D卷积(图像滤波)目标学会使用各种低通滤镜模糊图像将定制的滤镜应用于图像(2D卷积)2D卷积(图像滤波)与一维信号一样,还可以使用各种低通滤波器(LPF),高通滤波器(HPF)等对图像进行滤波。LPF有助于消除噪声,使图像模糊等。HPF滤波器有助于在图像中找到边缘。OpenCV提供了一个函数cv.filter2D来将内核与图像进行卷积。例如,我们将尝试对图像进行平均滤波。5x5平均滤波器内核如下所示:K = \frac{1}{25} \begin{bmatrix} 1 &am原创 2020-12-09 18:42:51 · 205 阅读 · 0 评论 -
OpenCV基于Python图像阈值处理
图像阈值处理目标简单阈值自适应阈值目标在本篇文章中,您将学习简单阈值,自适应阈值和Otsu阈值。你将学习函数cv.threshold和cv.adaptiveThreshold。简单阈值在这里,问题直截了当。对于每个像素,应用相同的阈值。如果像素值小于阈值,则将其设置为0,否则将其设置为最大值。函数cv.threshold用于简单阈值。第一个参数是原图像,它应该是灰度图像。第二个参数是阈值,用于对像素值进行分类。第三个参数是分配给超过阈值的像素值的最大值。OpenCV提供了不同类型的阈值,这由函原创 2020-12-07 21:11:02 · 292 阅读 · 0 评论 -
OpenCV基于Python图像的几何变换
图像的几何变换目标变换缩放平移警告旋转仿射变换透视变换目标学习将不同的几何变换应用到图像上,如平移、旋转、仿射变换等。你会使用到函数: cv.getPerspectiveTransform变换OpenCV提供了两个转换函数cv.warpAffine和cv.warpPerspective,您可以使用它们进行各种转换。cv.warpAffine采用2x3转换矩阵,而cv.warpPerspective采用3x3转换矩阵作为输入。缩放缩放只是调整图像的大小。为此,OpenCV带有一个函数cv原创 2020-12-05 19:18:31 · 376 阅读 · 0 评论 -
OpenCV基于python改变颜色空间
改变颜色空间目标改变颜色空间对象追踪如何找到要追踪的HSV值目标在本篇文章中,你将学习如何将图像从一个色彩空间转换到另一个,像BGR↔灰色,BGR↔HSV等。将创建一个应用程序,以提取视频中的彩色对象。你将学习以下功能:cv.cvtColor,cv.inRange等。改变颜色空间OpenCV中有超过150种颜色空间转换方法。但是我们将研究只有两个最广泛使用的,BGR↔GRAY和BGR↔HSV。对于颜色转换,我们使用cv函数。cvtColor(input_image, flag),其中fla原创 2020-12-04 22:37:28 · 314 阅读 · 0 评论 -
OpenCV基于Python的按位运算
按位运算这包括按位 AND 、 OR 、 NOT 和 XOR 操作。它们在提取图像的任何部分、定义和处理非矩形 ROI 等方面非常有用。 下面我们将看到一个例子,如何改变一个图像的特定区域。 我想把 OpenCV 的标志放在一个图像上面。如果我添加两个图像,它会改变颜色。如果我混合它,我得到一个透明的效果。但我希望它是不透明的。如果是一个矩形区域,我可以使用 ROI,但是 OpenCV 的 logo 不是长方形的,所以你可以使用如下的按位操作来实现:import cv2 as cvimport nu原创 2020-12-03 22:06:09 · 413 阅读 · 0 评论