OpenCV
本系列教程记录了博主自己学习opencv的过程。 内容主要基于opencv-python的官方教程和网上一些大佬的见解,整套教程相比opencv官方文档,补充了部分图像处理知识。
余喵爱吃鱼
万丈高楼从地起
展开
-
opencv-python:19_图像轮廓【一】(概念、特征、性质 、面积、周长、边界矩形、方向、极点、cv2.findContours(),cv2.drawContours())
OpenCV 中的轮廓理解什么是轮廓学习找轮廓,绘制轮廓等函数:cv2.findContours(),cv2.drawContours()一、查找轮廓轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用为了更加准确,要使用二值化图像。在寻找轮廓之前,要进行阈值化处理或者 Canny 边界检测。查找轮廓的函数会修改原始图像。如果你在找到轮廓之后还想使用原始图像的话,你应该将原始图像存储到其他变量中。在 OpenCV原创 2020-06-11 11:13:20 · 4906 阅读 · 0 评论 -
opencv-python:18_图像金字塔(高斯金字塔、拉普拉斯金字塔 、cv2.pyrUp()、cv2.pyrDown())
图像金字塔原创 2020-06-05 23:58:08 · 867 阅读 · 0 评论 -
opencv-python:17_图像经典边缘检测算子(边缘检测、图像梯度、Roberts算子、Prewitt算子、Sobel 算子、Laplacian 算子、Canny算子、算子优缺点对比)
图像边缘检测图像梯度,图像边界等相关函数:cv2.Sobel(),cv2.Schar(),cv2.Laplacian()边缘检测边缘检测是检测图像中的一些像素点,它们周围的像素点的灰度发生了急剧的变化,在此过程中,图像中的物体不同导致了这一变化,因此可以将这些像素点作为一个集合,可以用来标注图像中不同物体的边界。边缘区域的灰度剖面可以看作是一个阶跃,即图像的灰度在一个很小的区域内变化到另一个相差十分明显的区域。边缘是图像中的重要的结构性特征,边缘往往存在于目标和背景之间,不同的区原创 2020-06-04 16:38:18 · 7071 阅读 · 0 评论 -
opencv-python:16_形态学处理【二】(开操作、闭操作、形态学梯度、顶帽变换、黑帽变换,去除皮肤镜中的毛发噪音、cv2.morphologyEx())
形态学处理【二】开操作、闭操作、形态学梯度、顶帽变换、黑帽变换相关函数有:cv2.morphologyEx()、cv2.getStructuringElement()有趣的应用:去除皮肤镜中的毛发噪音一、开操作开操作(open):先腐蚀后膨胀。作用可以去掉小的白噪点,填充小的白洞。能排除小区域物体、消除孤立点、去噪、平滑物体的轮廓。用于移除一些小物体或者小亮斑点。如下假设对象是前景色,背景是黑色,腐蚀可把小白点去掉,膨胀又把主对象被腐蚀掉的部分还原回来。import原创 2020-05-28 11:26:31 · 2935 阅读 · 0 评论 -
opencv-python:15_形态学处理【一】(腐蚀、膨胀、结构元素、cv2.erode(),cv2.dilate(),cv2.getStructuringElement())
形态学处理形态学概念,腐蚀,膨胀相关函数有:cv2.erode(),cv2.dilate(),cv2.getStructuringElement()一、形态学形态学(morphology)常应用在生物学中,研究动植物的形态和结构;图像形态学即数学形态学(Mathematical morphology)是一门建立在格伦和拓扑学基础上的图像分析学科,是数学形态学图像处理的基本理论;常见图像形态学运算:腐蚀、膨胀、开运算、闭运算、骨架抽取、极线腐蚀、击中击不中变换、Top-hat变换、原创 2020-05-26 18:14:02 · 2558 阅读 · 1 评论 -
opencv-python:14_图像平滑(模糊)与 常见图像滤波(低通与高通滤波、图像卷积cv.filter2D()、线性滤波(方框滤波、均值滤波、高斯滤波)、非线性滤波(中值滤波、双边滤波))
图像平滑(模糊)与图像滤波低通滤波和高通滤波学习使用不同的低通滤波器对图像进行模糊使用自定义的滤波器对图像进行卷积(2D 卷积)opencv中常见的图像滤波一、低通滤波和高通滤波与以为信号一样,我们也可以对 2D 图像实施低通滤波(LPF),高通滤波(HPF)。LPF 帮助我们去除噪音,模糊图像HPF 帮助我们找到图像的边缘低通滤波器是模糊,高通滤波器是锐化低通滤波器就是允许低频信号通过,在图像中边缘和噪点都相当于高频部分,所以低通滤波器用于去除噪点、平滑和模糊图像。高通滤波器则反原创 2020-05-25 19:20:45 · 2581 阅读 · 0 评论 -
opencv-python:13_图像噪声(噪声的概念、椒盐噪声、高斯噪声、使用python给图像添加噪声)
图像噪声学习两种图像噪声,即椒盐噪声和高斯噪声。使用python实现给图像添加椒盐噪声和高斯噪声一、噪声的概念在噪声的概念中,通常采用信噪比(Signal-Noise Rate, SNR)衡量图像噪声。通俗的讲就是信号占多少,噪声占多少,SNR越小,噪声占比越大。在信号系统中,计量单位为dB,为10lg(PS/PN), PS和PN分别代表信号和噪声的有效功率。在这里,采用信号像素点的占比充当SNR,以衡量所添加噪声的多少。二、椒盐噪声椒盐噪声也称为脉冲噪声,是图像中经常见到原创 2020-05-24 21:59:18 · 7634 阅读 · 7 评论 -
opencv-python:12_图像阈值(二值化、固定阈值、自适应阈值、Otsu二值化、cv2.threshold,cv2.adaptiveThreshold)
图像阈值固定阈值,自适应阈值,Otsu 二值化等相关函数: cv2.threshold,cv2.adaptiveThreshold 等。全局阈值和局部阈值一、图像二值化定义:图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果。灰度值0:黑,灰度值255:白一幅图像包括目标物体、背景还有噪声,要想从多值的数字图像中直接提取出目标物体,常用的方法就是设定一个阈值T,用T将图像的数据分成两部分:大于T的像素群和小于T的像素群。原创 2020-05-24 10:55:56 · 4167 阅读 · 0 评论 -
opencv-python:11_几何变换(平移、缩放、旋转、仿射变换、透视变换、cv2.warpAffine 、cv2.warpPerspective、cv2.getPerspectiveTran)
几何变换学习对图像进行各种几个变换,例如移动,旋转,仿射变换等。函数:cv2.getPerspectiveTransform。变换函数OpenCV 提供了两个变换函数,cv2.warpAffine 和 cv2.warpPerspective,使用这两个函数你可以实现所有类型的变换。cv2.warpAffine 接收的参数是2 × 3 的变换矩阵,而 cv2.warpPerspective 接收的参数是 3 × 3 的变换矩阵。一、扩展缩放扩展缩放只是改变图像的尺寸大小。OpenCV 提供的函原创 2020-05-17 16:11:32 · 3550 阅读 · 0 评论 -
opencv-python:10_OpenCV颜色空间转换(cv2.cvtColor()、cv2.inRange()、获取图像中指定颜色区域、调用摄像头进行物体跟踪)
颜色空间转换学习如何对图像进行颜色空间转换,比如从 BGR 到灰度图,或者BGR 到 HSV 等。创建一个程序用来从一幅图像中获取某个特定颜色的物体。相关函数有:cv2.cvtColor(),cv2.inRange()。一、转换颜色空间在 OpenCV 中有超过 150 中进行颜色空间转换的方法。但是你以后就会发现我们经常用到的也就两种:BGR↔Gray 和 BGR↔HSV。...原创 2020-04-07 12:20:29 · 1286 阅读 · 0 评论 -
opencv-python:09_OpenCV中的数学工具
OpenCV 中的数学工具这一部分,涉及内容相当多,放在一篇博客里面来写,不免有些赘述了。CSDN和知乎上有几个博主关于这部分内容的介绍文章写的很不错:https://zhuanlan.zhihu.com/p/73694512https://zhuanlan.zhihu.com/p/73546610https://blog.csdn.net/Qregi/article/details/8...原创 2020-04-07 12:12:44 · 262 阅读 · 0 评论 -
opencv-python:08_IPython的魔法命令(包括magic、debug、time 、timeit、run等等)
IPython的魔法命令IPython提供了许多魔法命令,使得在IPython环境中的操作更加得心应手。魔法命令都以%或者%%开头,以%开头的成为行命令,%%开头的称为单元命令。行命令只对命令所在的行有效,而单元命令则必须出现在单元的第一行,对整个单元的代码进行处理。常用魔法命令:%magic 显示所有魔法命令的详细文档执行 %lsmagic 命令将提供所有可用魔术命令的列表...原创 2020-04-07 12:10:42 · 375 阅读 · 0 评论 -
opencv-python:07_OpenCV程序性能检测及优化(getTickCount()、getTickFrequency()、useOptimized()、%time、%timeit )
OpenCV程序性能检测及优化在图像处理中你每秒钟都要做大量的运算,所以你的程序不仅要能给出正确的结果,同时还必须要快。检测程序的效率一些能够提高程序效率的技巧相关函数有:cv2.getTickCount,cv2.getTickFrequency等检测时间的方法使用OpenCVPython 的 time 的的模块,你可以用它来测量程序的运行时间。Python 的 pr...原创 2020-04-03 11:42:34 · 841 阅读 · 0 评论 -
opencv-python:06_图像算术运算(图像加法、图像融合、图像按位运算【AND,OR,NOT,XOR】、掩膜概念)
图像上的算术运算学习图像上的算术运算,加法,减法,位运算等。相关函数:cv2.add(),cv2.addWeighted() 等。一、图像加法可以使用函数 cv2.add() 将两幅图像进行加法运算,当然也可以直接使用 numpy,res=img1+img。两幅图像的大小,类型必须一致,或者第二个图像可以使一个简单的标量值。注意:OpenCV 中的加法与 Numpy 的加法是...原创 2020-04-03 11:35:44 · 1432 阅读 · 0 评论 -
opencv-python:05_图像基础操作(像素、图像属性、ROI、通道拆分合并、BGR转RGB、边界填充)
图像的基础操作获取像素值并修改获取图像的属性(信息)图像的 ROI()图像通道的拆分及合并BGR转RGB图像扩边(边界填充)一、获取并修改像素值注意: Numpy 是经过优化了的进行快速矩阵运算的软件包。所以我们不推荐逐个获取像素值并修改,这样会很慢,能有矩阵运算就不要用循环。import cv2import numpy as npimport matplotlib.py...原创 2020-04-02 12:28:33 · 1081 阅读 · 0 评论 -
opencv-python:04_OpenCV处理鼠标响应事件
OpenCV处理鼠标响应事件学习使用 OpenCV 处理鼠标响应事件函数:cv2.setMouseCallback()一、定义鼠标回调函数格式都是统一的,不同的是调用后的功能def mouse_callback(event,x,y,flags,param):定义完成后需要注册该回调函数cv2.setMouseCallback(windowName,mouse_callba...原创 2020-04-01 22:36:51 · 759 阅读 · 1 评论 -
opencv-python:03_OpenCV 中的绘图函数(点,线,圆,矩阵,多边形,添加文字)
OpenCV 中的绘图函数学习使用 OpenCV 绘制不同几何图形相关函数:cv2.line(),cv2.circle(),cv2.rectangle(),cv2.ellipse(),cv2.putText() 等。代码上面所有的这些绘图函数需要设置下面这些参数:img:你想要绘制图形的那幅图像。color:形状的颜色。以 RGB 为例,需要传入一个元组,例如:(255,0,0)...原创 2020-04-01 13:08:24 · 1143 阅读 · 0 评论 -
opencv-python:02_实现视频的读、显、存
实现视频的读、显、存学会从摄像头获取并显示视频学习相关函数:cv2.VideoCapture(),cv2.VideoWrite()一、用摄像头捕获视频我们经常需要使用摄像头捕获实时图像。OpenCV 为这中应用提供了一个非常简单的接口cv2.VideoCapture(0)。让我们使用摄像头来捕获一段视频,并把它转换成灰度视频显示出来。为了获取视频:创建一个 VideoCaptu...原创 2020-03-29 08:57:12 · 237 阅读 · 0 评论 -
opencv-python:01_实现图片的读、显、存
实现图片的读、显、存学习怎样读入一幅图像,怎样显示一幅图像,以及如何保存一幅图像相关函数:cv2.imread(),cv2.imshow(),cv2.imwrite()一、读入图像imread()使用函数 cv2.imread() 读入图像。这幅图像应该在此程序的工作路径,或者给函数提供完整路径,第二个参数是要告诉函数应该如何读取这幅图片。cv.imread( filename[,...原创 2020-03-28 12:15:24 · 349 阅读 · 0 评论 -
opencv-python:00_环境介绍与安装
opencv-python:环境介绍与安装一、安装Anaconda。为什么推荐使用anaconda呢?1、自带的包管理系统,方便安装各种库,避免各种安装和编译python包以及不兼容后果。如opencv-python2、自带独立的Python IDE,可以在相应的环境上直接开发编辑,无需要对接解析器。3、在其自带的jupyter NoteBook上写代码,做学习笔记,很方便。安装过程...原创 2020-03-28 12:06:25 · 180 阅读 · 0 评论