
OpenCV-Python
磐创 AI
这个作者很懒,什么都没留下…
展开
-
福利,OpenCV最新中文版官方教程来了
OpenCV 中文版官方教程来了。OpenCV是计算机视觉中经典的专用库,然而其中文版官方教程久久不来。近日,一款最新OpenCV4.1 版本的完整中文版官方教程出炉,读者朋友可以更好的学习了解OpenCV相关细节。教程来自objectdetection.cn。最新Opencv-Python中文版官方文档:http://woshicver.com教程里有什么教程根据官方提供的文档,尽...原创 2020-03-20 13:10:04 · 8482 阅读 · 7 评论 -
OpenCV-Python 光流 | 四十八
目标在本章中,我们将了解光流的概念及其使用Lucas-Kanade方法的估计。我们将使用cv.calcOpticalFlowPyrLK()之类的函数来跟踪视频中的特征点。我们将使用cv.calcOpticalFlowFarneback()方法创建一个密集的光流场。光流光流是由物体或照相机的运动引起的两个连续帧之间图像物体的视运动的模式。它是2D向量场,其中每个向量都是位移向量,...原创 2020-03-04 10:53:44 · 1783 阅读 · 2 评论 -
OpenCV-Python BRIEF(二进制的鲁棒独立基本特征) | 四十二
目标在本章中,我们将看到BRIEF算法的基础知识理论我们知道SIFT使用128维矢量作为描述符。由于它使用浮点数,因此基本上需要512个字节。同样,SURF最少也需要256个字节(用于64像素)。为数千个功能部件创建这样的向量会占用大量内存,这对于资源受限的应用程序尤其是嵌入式系统而言是不可行的。内存越大,匹配所需的时间越长。但是实际匹配可能不需要所有这些尺寸。我们可以使用PCA,LDA等...原创 2020-02-20 09:24:59 · 1644 阅读 · 0 评论 -
OpenCV-Python 用于角点检测的FAST算法 | 四十一
目标在本章中,我们将了解FAST算法的基础知识。我们将使用OpenCV功能对FAST算法进行探索。理论我们看到了几个特征检测器,其中很多真的很棒。但是,从实时应用程序的角度来看,它们不够快。最好的例子是计算资源有限的SLAM(同时定位和制图)移动机器人作为对此的解决方案,Edward Rosten和Tom Drummond在2006年的论文“用于高速拐角检测的机器学习”中提出了...原创 2020-02-17 10:58:50 · 1926 阅读 · 0 评论 -
OpenCV-Python SIFT尺度不变特征变换 | 三十九
目标在这一章当中,我们将学习SIFT算法的概念我们将学习找到SIFT关键点和描述算符。理论在前两章中,我们看到了一些像Harris这样的拐角检测器。它们是旋转不变的,这意味着即使图像旋转了,我们也可以找到相同的角。很明显,因为转角在旋转的图像中也仍然是转角。但是缩放呢?如果缩放图像,则拐角可能不是角。例如,检查下面的简单图像。在同一窗口中放大小窗口中小图像中的拐角时,该角是平坦的...原创 2020-02-12 14:09:40 · 1550 阅读 · 0 评论 -
OpenCV-Python Shi-tomas拐角检测器和益于跟踪的特征 | 三十八
目标在本章中,我们将学习另一个拐角检测器:Shi-Tomasi拐角检测器我们将看到以下函数:cv.goodFeaturesToTrack()理论在上一章中,我们看到了Harris Corner Detector。1994年下半年,J。Shi和C. Tomasi在他们的论文《有益于跟踪的特征》中做了一个小修改,与Harris Harris Detector相比,显示了更好的结果。哈...原创 2020-02-10 22:55:34 · 1530 阅读 · 0 评论 -
OpenCV-Python 哈里斯角检测 | 三十七
目标在本章中,我们将了解"Harris Corner Detection”背后的概念。我们将看到以下函数:cv.cornerHarris(),cv.cornerSubPix()理论在上一章中,我们看到角是图像中各个方向上强度变化很大的区域。Chris Harris和Mike Stephens在1988年的论文《组合式拐角和边缘检测器》中做了一次尝试找到这些拐角的尝试,所以现在将其...原创 2020-02-02 20:46:04 · 1635 阅读 · 0 评论 -
OpenCV-Python 理解特征 | 三十六
目标在本章中,我们将尝试理解什么是特征,为什么拐角重要等等解释你们大多数人都会玩拼图游戏。你会得到很多小图像,需要正确组装它们以形成大的真实图像。问题是,你怎么做?将相同的理论投影到计算机程序上,以便计算机可以玩拼图游戏呢?如果计算机可以玩拼图游戏,为什么我们不能给计算机提供很多自然风光的真实图像,并告诉计算机将所有这些图像拼接成一个大图像呢?如果计算机可以将多个自然图像缝合在一起,那么如何...原创 2020-01-30 22:48:32 · 1656 阅读 · 0 评论 -
OpenCV-Python 图像分割与Watershed算法 | 三十四
目标在本章中,我们将学习使用分水岭算法实现基于标记的图像分割我们将看到:cv.watershed()理论任何灰度图像都可以看作是一个地形表面,其中高强度表示山峰,低强度表示山谷。你开始用不同颜色的水(标签)填充每个孤立的山谷(局部最小值)。随着水位的上升,根据附近的山峰(坡度),来自不同山谷的水明显会开始合并,颜色也不同。为了避免这种情况,你要在水融合的地方建造屏障。你继续填满水...原创 2020-01-23 19:32:08 · 4764 阅读 · 1 评论 -
OpenCV-Python 霍夫圈变换 | 三十三
学习目标在本章中,我们将学习使用霍夫变换来查找图像中的圆。我们将看到以下函数:cv.HoughCircles()理论圆在数学上表示为$(x-x{center})^2 (y-y{center})^2 = r^2$,其中$(x{center},y{center})$是圆的中心,$r$是圆的半径。从等式中,我们可以看到我们有3个参数,因此我们需要3D累加器进行霍夫变换,这将非常低效。因...原创 2020-01-21 21:03:19 · 1689 阅读 · 0 评论 -
OpenCV-Python 霍夫线变换 | 三十二
目标在这一章当中,我们将了解霍夫变换的概念。我们将看到如何使用它来检测图像中的线条。我们将看到以下函数:cv.HoughLines(),cv.HoughLinesP()理论如果可以用数学形式表示形状,则霍夫变换是一种检测任何形状的流行技术。即使形状有些破损或变形,也可以检测出形状。我们将看到它如何作用于一条线。一条线可以表示为$y = mx c$或以参数形式表示为$rho...原创 2020-01-18 21:52:32 · 1646 阅读 · 0 评论 -
OpenCV-Python 模板匹配 | 三十一
目标在本章中,您将学习使用模板匹配在图像中查找对象你将看到以下功能:cv.matchTemplate(),cv.minMaxLoc()理论模板匹配是一种用于在较大图像中搜索和查找模板图像位置的方法。为此,OpenCV带有一个函数cv.matchTemplate()。它只是将模板图像滑动到输入图像上(就像在2D卷积中一样),然后在模板图像下比较模板和输入图像的拼图。OpenCV...原创 2020-01-17 17:24:06 · 1961 阅读 · 0 评论 -
OpenCV-Python 傅里叶变换 | 三十
目标在本节中,我们将学习使用OpenCV查找图像的傅立叶变换利用Numpy中可用的FFT函数傅立叶变换的某些应用程序我们将看到以下函数:cv.dft(),cv.idft()等理论傅立叶变换用于分析各种滤波器的频率特性。对于图像,使用2D离散傅里叶变换(DFT)查找频域。一种称为快速傅立叶变换(FFT)的快速算法用于DFT的计算。关于这些的详细信息可以在任何图像处理或信号处理教...原创 2020-01-16 14:57:51 · 1995 阅读 · 0 评论 -
OpenCV-Python 直方图-3:二维直方图 | 二十八
目标在本章中,我们将学习查找和绘制2D直方图。这将在以后的章节中有所帮助。介绍在第一篇文章中,我们计算并绘制了一维直方图。 之所以称为一维,是因为我们仅考虑一个特征,即像素的灰度强度值。 但是在二维直方图中,您要考虑两个特征。 通常,它用于查找颜色直方图,其中两个特征是每个像素的色相和饱和度值。已经有一个python示例(samples / python / color_histogram...原创 2020-01-15 14:13:10 · 1905 阅读 · 1 评论 -
OpenCV-Python 直方图-4:直方图反投影 | 二十九
目标在本章中,我们将学习直方图反投影。理论这是由Michael J. Swain和Dana H. Ballard在他们的论文《通过颜色直方图索引》中提出的。用简单的话说是什么意思?它用于图像分割或在图像中查找感兴趣的对象。简而言之,它创建的图像大小与输入图像相同(但只有一个通道),其中每个像素对应于该像素属于我们物体的概率。用更简单的话来说,与其余部分相比,输出图像将在可能有对象的区域具有...原创 2020-01-14 13:42:38 · 1598 阅读 · 0 评论 -
OpenCV-Python 直方图-2:直方图均衡 | 二十七
目标在本节中,我们将学习直方图均衡化的概念,并利用它来提高图像的对比度。理论考虑这样一个图像,它的像素值仅局限于某个特定的值范围。例如,较亮的图像将把所有像素限制在高值上。但是一幅好的图像会有来自图像所有区域的像素。因此,您需要将这个直方图拉伸到两端(如下图所示,来自wikipedia),这就是直方图均衡化的作用(简单来说)。这通常会提高图像的对比度。我建议您阅读直方图均衡化上...原创 2020-01-13 13:11:54 · 822 阅读 · 0 评论 -
OpenCV-Python 直方图-1:查找、绘制和分析 | 二十六
目标学会使用OpenCV和Numpy函数查找直方图使用OpenCV和Matplotlib函数绘制直方图你将看到以下函数:cv.calcHist(),np.histogram()等。理论那么直方图是什么?您可以将直方图视为图形或绘图,从而可以总体了解图像的强度分布。它是在X轴上具有像素值(不总是从0到255的范围),在Y轴上具有图像中相应像素数的图。这只是理解图像的另一种方式。...原创 2020-01-11 16:26:29 · 1551 阅读 · 0 评论 -
OpenCV-Python 轮廓分层 | 二十五
目标这次我们学习轮廓的层次,即轮廓中的父子关系。理论在前几篇关于轮廓的文章中,我们已经讨论了与OpenCV提供的轮廓相关的几个函数。但是当我们使用cv.findcontour()函数在图像中找到轮廓时,我们已经传递了一个参数,轮廓检索模式。我们通常通过了cv.RETR_LIST或cv.RETR_TREE,效果很好。但这到底意味着什么呢?另外,在输出中,我们得到了三个数组,第一个是图像,第二...原创 2020-01-09 16:28:01 · 1690 阅读 · 0 评论 -
OpenCV-Python 轮廓:更多属性 | 二十四
目标在本章中,我们将学习凸性缺陷以及如何找到它们查找点到多边形的最短距离匹配不同的形状理论和代码1. 凸性缺陷我们看到了关于轮廓的第二章的凸包。从这个凸包上的任何偏差都可以被认为是凸性缺陷。OpenCV有一个函数来找到这个,cv.convexityDefects()。一个基本的函数调用如下:hull = cv.convexHull(cnt,returnPoints = Fa...原创 2020-01-07 11:00:39 · 1388 阅读 · 0 评论 -
OpenCV-Python 轮廓属性 | 二十三
目标在这里,我们将学习提取一些常用的物体属性,如坚实度,等效直径,掩模图像,平均强度等。更多的功能可以在Matlab regionprops文档中找到。(注:质心、面积、周长等也属于这一类,但我们在上一章已经见过)1. 长宽比它是对象边界矩形的宽度与高度的比值。$$Aspect ; Ratio = frac{Width}{Height}$$x,y,w,h = cv.boundingRe...原创 2020-01-04 14:16:30 · 840 阅读 · 0 评论 -
OpenCV-Python 轮廓特征 | 二十二
目标在本文中,我们将学习如何找到轮廓的不同特征,例如面积,周长,质心,边界框等。您将看到大量与轮廓有关的功能。1. 特征矩特征矩可以帮助您计算一些特征,例如物体的质心,物体的面积等。请查看特征矩上的维基百科页面。函数cv.moments()提供了所有计算出的矩值的字典。见下文:import numpy as npimport cv2 as cvimg = cv.imread...原创 2020-01-03 13:25:54 · 1858 阅读 · 0 评论 -
OpenCV-Python 轮廓:入门 | 二十一
目标了解轮廓是什么。学习查找轮廓,绘制轮廓等。你将看到以下功能:cv.findContours(),cv.drawContours()什么是轮廓?轮廓可以简单地解释为连接具有相同颜色或强度的所有连续点(沿边界)的曲线。轮廓是用于形状分析以及对象检测和识别的有用工具。为了获得更高的准确性,请使用二进制图像。因此,在找到轮廓之前,请应用阈值或canny边缘检测。从OpenCV...原创 2019-12-31 19:43:47 · 1307 阅读 · 0 评论 -
OpenCV-Python 图像金字塔 | 二十
目标在本章中,我们将学习图像金字塔我们将使用图像金字塔创建一个新的水果“Orapple”我们将看到以下功能:cv.pyrUp(),cv.pyrDown()理论通常,我们过去使用的是恒定大小的图像。但是在某些情况下,我们需要使用不同分辨率的(相同)图像。例如,当在图像中搜索某些东西(例如人脸)时,我们不确定对象将以多大的尺寸显示在图像中。在这种情况下,我们将需要创建一组具有不同分...原创 2019-12-27 13:08:26 · 1368 阅读 · 0 评论 -
OpenCV-Python Canny边缘检测 | 十九
目标在本章中,我们将学习Canny边缘检测的概念OpenCV函数: cv.Canny()理论Canny Edge Detection是一种流行的边缘检测算法。它由John F. Canny发明这是一个多阶段算法,我们将经历每个阶段。降噪由于边缘检测容易受到图像中噪声的影响,因此第一步是使用5x5高斯滤波器消除图像中的噪声。我们已经在前面的章节中看到了这一点。查找...原创 2019-12-25 15:03:43 · 1526 阅读 · 0 评论 -
OpenCV-Python 轨迹栏作为调色板 | 九
目标了解将轨迹栏固定到OpenCV窗口您将学习以下功能:cv.getTrackbarPos,cv.createTrackbar等。代码演示在这里,我们将创建一个简单的应用程序,以显示您指定的颜色。您有一个显示颜色的窗口,以及三个用于指定B、G、R颜色的跟踪栏。滑动轨迹栏,并相应地更改窗口颜色。默认情况下,初始颜色将设置为黑色。对于cv.getTrackbarPos()函数,第一...原创 2019-12-24 14:28:44 · 789 阅读 · 0 评论 -
OpenCV-Python 图像梯度 | 十八
目标在本章中,我们将学习:查找图像梯度,边缘等我们将看到以下函数:cv.Sobel(),cv.Scharr(),cv.Laplacian()等理论OpenCV提供三种类型的梯度滤波器或高通滤波器,即Sobel,Scharr和Laplacian。我们将看到他们每一种。1. Sobel 和 Scharr 算子Sobel算子是高斯平滑加微分运算的联合运算,因此它更抗噪声。逆可以指定...原创 2019-12-21 19:15:55 · 1197 阅读 · 0 评论 -
OpenCV-Python 形态学转换 | 十七
目标在这一章当中, 我们将学习不同的形态学操作,例如侵蚀,膨胀,开运算,闭运算等。 我们将看到不同的功能,例如:cv.erode(),cv.dilate(), cv.morphologyEx()等。理论形态变换是一些基于图像形状的简单操作。通常在二进制图像上执行。它需要两个输入,一个是我们的原始图像,第二个是决定操作性质的结构元素或内核。两种基本的形态学算子是侵蚀和膨胀。然后,它的变体形式(...原创 2019-12-19 18:23:48 · 1181 阅读 · 0 评论 -
OpenCV-Python 图像平滑 | 十六
目标学会:使用各种低通滤镜模糊图像将定制的滤镜应用于图像(2D卷积)2D卷积(图像过滤)与一维信号一样,还可以使用各种低通滤波器(LPF),高通滤波器(HPF)等对图像进行滤波。LPF有助于消除噪声,使图像模糊等。HPF滤波器有助于在图像中找到边缘。OpenCV提供了一个函数cv.filter2D来将内核与图像进行卷积。例如,我们将尝试对图像进行平均滤波。5x5平均滤波器内核如...原创 2019-12-18 15:50:51 · 2568 阅读 · 0 评论 -
OpenCV-Python 图像阈值 | 十五
目标在本教程中,您将学习简单阈值,自适应阈值和Otsu阈值。你将学习函数cv.threshold和cv.adaptiveThreshold。简单阈值在这里,问题直截了当。对于每个像素,应用相同的阈值。如果像素值小于阈值,则将其设置为0,否则将其设置为最大值。函数cv.threshold用于应用阈值。第一个参数是源图像,它应该是灰度图像。第二个参数是阈值,用于对像素值进行分类。第三...原创 2019-12-16 13:12:22 · 1279 阅读 · 0 评论 -
OpenCV-Python 改变颜色空间 | 十三
目标在本教程中,你将学习如何将图像从一个色彩空间转换到另一个,像BGR↔灰色,BGR↔HSV等除此之外,我们还将创建一个应用程序,以提取视频中的彩色对象你将学习以下功能:cv.cvtColor,cv.inRange等。改变颜色空间OpenCV中有超过150种颜色空间转换方法。但是我们将研究只有两个最广泛使用的,BGR↔灰色和BGR↔HSV。对于颜色转换,我们使用cv函数。cv...原创 2019-12-09 12:22:35 · 1346 阅读 · 0 评论 -
OpenCV -Python 性能衡量和提升技术 | 十二
目标在图像处理中,由于每秒要处理大量操作,因此必须使代码不仅提供正确的解决方案,而且还必须以最快的方式提供。因此,在本章中,你将学习衡量代码的性能。一些提高代码性能的技巧。你将看到以下功能:cv.getTickCount,cv.getTickFrequency等。除了OpenCV,Python还提供了一个模块time,这有助于衡量执行时间。另一个模块profile有助于获取有关代...原创 2019-12-07 16:29:19 · 1368 阅读 · 0 评论 -
OpenCV-Python 图像上的算术运算 | 十一
目标学习图像的几种算术运算,例如加法,减法,按位运算等。您将学习以下功能:cv.add,cv.addWeighted等。图像加法您可以通过OpenCV函数cv.add()或仅通过numpy操作res = img1 img2添加两个图像。两个图像应具有相同的深度和类型,或者第二个图像可以只是一个标量值。注意OpenCV加法和Numpy加法之间有区别。OpenCV加法是饱和运...原创 2019-12-04 13:26:35 · 2335 阅读 · 0 评论 -
OpenCV-Python | 图像的基本操作 十
目标学会:访问像素值并修改它们访问图像属性设置感兴趣区域(ROI)分割和合并图像本节中的几乎所有操作都主要与Numpy相关,而不是与OpenCV相关。要使用OpenCV编写更好的优化代码,需要Numpy的丰富知识。(由于大多数示例都是单行代码,因此示例将在Python终端中显示)访问和修改像素值让我们先加载彩色图像:>>> import numpy a...原创 2019-12-01 14:22:21 · 1275 阅读 · 0 评论 -
OpenCV-Python 鼠标作画 | 八
目标了解如何在OpenCV中处理鼠标事件您将学习以下功能:cv.setMouseCallback()简单演示在这里,我们创建一个简单的应用程序,无论我们在哪里双击它,都可以在图像上绘制一个圆。首先,我们创建一个鼠标回调函数,该函数在发生鼠标事件时执行。鼠标事件可以是与鼠标相关的任何事物,例如左键按下,左键按下,左键双击等。它为我们提供了每个鼠标事件的坐标(x,y)。通过此活动和地...原创 2019-11-29 16:12:32 · 783 阅读 · 0 评论 -
OpenCV-Python 绘图功能 | 七
目标学习使用OpenCV绘制不同的几何形状您将学习以下功能:cv.line(),cv.circle(),cv.rectangle(),cv.ellipse(),cv.putText()等。代码在上述所有功能中,您将看到一些常见的参数,如下所示:img:您要绘制形状的图像color:形状的颜色。对于BGR,将其作为元组传递,例如:(255,0,0)对于蓝色。对于灰度,只需传递...原创 2019-11-27 13:24:48 · 5453 阅读 · 0 评论 -
OpenCV-Python 读取显示视频 | 六
目标学习读取视频,显示视频和保存视频。学习从相机捕捉并显示它。你将学习以下功能:cv.VideoCapture(),cv.VideoWriter()从相机中读取视频通常情况下,我们必须用摄像机捕捉实时画面。提供了一个非常简单的界面。让我们从摄像头捕捉一段视频(我使用的是我笔记本电脑内置的网络摄像头) ,将其转换成灰度视频并显示出来。只是一个简单的任务开始。要捕获视频,你需要创建...原创 2019-11-25 14:08:15 · 1476 阅读 · 0 评论 -
OpenCV-Python 读取显示图像 | 五
目标在这里,你将学习如何读取图像,如何显示图像以及如何将其保存回去你将学习以下功能:cv.imread(),cv.imshow(),cv.imwrite()(可选)你将学习如何使用Matplotlib显示图像使用OpenCV读取图像使用cv.imread()函数读取图像。图像应该在工作目录或图像的完整路径应给出。第二个参数是一个标志,它指定了读取图像的方式。cv.IMRE...原创 2019-11-23 10:04:40 · 1285 阅读 · 0 评论 -
在Windows中安装OpenCV-Python |四
目标在本教程中我们将学习在你的Windows系统中设置OpenCV-Python。下面的步骤在装有Visual Studio 2010和Visual Studio 2012的Windows 7-64位计算机上进行了测试。屏幕截图展示的是VS2012。从预编译的二进制文件安装OpenCV下面的Python软件包将被下载并安装到其默认位置。Python的3.X(3.4 )或P...原创 2019-11-20 09:57:31 · 1549 阅读 · 0 评论 -
在Ubuntu中安装OpenCV-Python | 三
在本教程中,我们将学习在Ubuntu System中设置OpenCV-Python。以下步骤针对Ubuntu 16.04和18.04(均为64位)进行了测试。可以通过两种方式在Ubuntu中安装OpenCV-Python:从Ubuntu存储库中可用的预构建二进制文件安装从源代码编译。在本节中,我们将同时看到两者。另一个重要的事情是所需的其他库。OpenCV-Python仅需要Num...原创 2019-11-18 15:10:56 · 4448 阅读 · 0 评论 -
在Fedora中安装OpenCV-Python | 二
目标在本教程中我们将学习在你的Fedora系统中设置OpenCV-Python。针对Fedora 18(64位)和Fedora 19(32位)进行以下步骤。介绍可以通过两种方式在Fedora中安装OpenCV-Python:1)从fedora存储库中可用的预构建二进制文件安装,2)从源代码进行编译。在本节中,我们将同时看到这两种方法。另一个重要的事情是所需的其他库。OpenCV-...原创 2019-11-17 13:22:41 · 2485 阅读 · 1 评论