![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
OpenCV从入门到项目实战(保姆级别,代码全部可运行)
文章平均质量分 89
OpenCV从入门到项目实战(保姆级别,代码全部可运行),自己入门的学习笔记。
主要参考书目如下:
《python编程》
《opencv实例精解》
《学习opencv4》
《opencv4计算机视觉项目实战》
小幽余生不加糖
余生不加糖,因为小幽就很甜呀!!!
展开
-
OpenCV实例(九)基于深度学习的运动目标检测(三)YOLOv3识别物体
目标检测,粗略地说就是输入图片/视频,经过处理后得到目标的位置信息(比如左上角和右下角的坐标)、目标的预测类别、目标的预测置信度。前面我们阐述了不少理论知识,现在需要动手实战了。对于初学者来说,自己实现YOLO算法不太现实,幸运的是OpenCV的DNN(Deep Neural Network)模块封装了Darknet框架(封装了YOLO算法)。原创 2023-08-20 20:31:11 · 968 阅读 · 0 评论 -
OpenCV实例(九)基于深度学习的运动目标检测(二)YOLOv2概述
对YOLO存在的不足,业界又推出了YOLOv2。YOLOv2主要通过以下方法对模型进行优化:(1)使用Batch Normalization方法对模型中每一个卷积层的输入进行归一化,缓解梯度消失,加快收敛速度,减少了训练时间,同时提高了平均检测准确率。(2)增加Anchors机制,借助训练集的边框标签值,使用k-means聚类的方法生成几种不同尺寸的Anchors。YOLOv2去掉了YOLO网络中的全连接层和最后一个池化层,以提高特征的分辨率;在最后一层卷积采样后使用Anchors机制,旨在提高IoU。原创 2023-08-20 20:06:31 · 682 阅读 · 0 评论 -
OpenCV实例(九)基于深度学习的运动目标检测(一)YOLO运动目标检测算法
2012年,随着深度学习技术的不断突破,开始兴起基于深度学习的目标检测算法的研究浪潮。2014年,Girshick等人首次采用深度神经网络实现目标检测,设计出R-CNN网络结构,实验结果表明,在检测任务中性能比DPM算法优越。同时,何恺明等人针对卷积神经网络(Convolutional Neural Network,CNN)计算复杂度高的问题,引入空间金字塔池化层,设计出基于SPP-Net的目标检测网络,不但提高了目标检测速度,而且支持任意尺寸大小的图像输入。原创 2023-08-12 20:08:07 · 1633 阅读 · 0 评论 -
OpenCV实例(八)车牌字符识别技术(三)汉字识别
相较于数字和英文字符的识别,汽车牌照中的汉字字符识别的难度更大,主要原因有以下4个方面:(1)字符笔画因切分误差导致非笔画或笔画流失。(2)汽车牌照被污染导致字符上出现污垢。(3)采集所得车辆图像分辨率低导致多笔画的汉字较难分辨。(4)车辆图像采集时所受光照影响的差异导致笔画较淡。综合汉字识别时的这些难点来看,很难被直接提取的是字符的局部特征。笔画作为最重要的特征而仅存在于汉字中,这由先验知识可知。一旦捺、横、竖、撇这些笔画特征被提取到,对于汉字字符识别的工作就完成了许多。原创 2023-08-12 14:25:24 · 1150 阅读 · 1 评论 -
OpenCV实例(八)车牌字符识别技术(二)字符识别
真实的汽车图像的采集主要通过CCD工业相机进行的,输入的汽车牌照的字符图像在经过汽车牌照的定位以及汽车牌照内字符的分割之后形成,其中约有50%的高质量的字符包含在3000个字符组成的字符集中,剩下的汽车牌照内的字符质量都有一定程度的降低。相较于传统的模板匹配法和基于细化图像霍斯多夫距离的模板匹配法,准确率在基于边缘霍斯多夫距离的模板匹配识别方法中表现得更高(为98%,字符的错误识别率只有2%)。第三阶段为发展阶段。目前字符识别方法主要有基于神经网络的识别方法、基于特征分析的匹配方法和基于模板的匹配方法。原创 2023-08-12 13:42:21 · 2078 阅读 · 0 评论 -
OpenCV实例(八)车牌字符识别技术(一)模式识别
人在观察事物或现象时,常寻找它与其他事物或现象不同之处,并根据一定目的把相似、但又细节不同的事物或现象组成一类——如字符识别,虽然每个人写的数字“8”都不一样,但都是同一类。模式识别是AI的一个重要方向,目的在于模拟人的感知能力,也称“机器感知”、“智能感知”。其发展于20世纪40年代电子计算机的出现,21世纪与深度学习融合,近年深度学习和大数据极大推动了其发展!包括声音和语言识别、文字识别、指纹识别、声纳和地震信号分析、图片分析、化学模式识别等等。模式识别的相关原理一般是作为识别研究的基础性理论。原创 2023-08-12 13:23:46 · 1060 阅读 · 0 评论 -
OpenCV实例(七)汽车检测
对于图像和视频检测中的目标类型并没有具体限制,但是,为了使结果的准确度在可接受范围内,需要一个足够大的数据集,包括训练图像的大小要一样。如果由自己构建这样的数据集(这是完全可能的)将会非常耗时。原创 2023-04-19 19:56:40 · 1949 阅读 · 0 评论 -
OpenCV实例(六)行人检测
行人检测是目标检测的一个分支。目标检测的任务是从图像中识别出预定义类型目标,并确定每个目标的位置。用来检测行人的目标检测系统被称为行人检测系统。行人检测主要用来判断输入图片(或视频)内是否包含行人。若检测到行人,则给出其具体的位置信息。该位置信息是智能视频监控、人体行为分析、智能驾驶、智能机器人等应用的关键基础。由于行人可能处于移动状态,也可能处于静止状态,且外观容易受到体型、姿态、衣着、拍摄角度、遮挡等多种因素的影响,因此行人检测在计算机视觉领域内成为研究热点与难点。原创 2023-04-15 20:51:28 · 8421 阅读 · 4 评论 -
OpenCV实例(五)指纹识别
指纹识别,简单来说就是判断一枚未知的指纹属于一组已知指纹里面的哪个人的指纹。这个识别过程与我们在村口识别远处走来的人类似,首先,要抓住主要特征,二者的主要特征要一致;其次,二者要有足够多的主要特征一致。满足了这两个条件就能判断一枚指纹是否与某个人的指纹一致了。图像处理过程中非常关键的一个步骤就是特征提取。特征提取需要解决的问题有如下两个:● 选择有用的特征。该过程要选择核心的关键特征,该特征要能体现当前图像的个性。● 将特征量化。原创 2023-04-14 22:24:24 · 2838 阅读 · 1 评论 -
OpenCV实例(四)手写数字识别
images中依次存储的是数字0~9的共计100个模板图像的路径名,其中索引对应各模板图像的编号。获取所有匹配值中的最佳匹配值(该匹配值可能是所有匹配值中的最大值,也可能是所有匹配值中的最小值),并找到对应的模板。构造一个列表matchValue用来存储待识别图像与images中每个模板的匹配值,其中依次存储的是待识别图像与数字0~9的100个模板图像的匹配值。本章通过将函数cv2.matchTemplate()的参数设置为cv2.TM_CCOEFF来计算匹配值,因此最大的匹配值就是最佳匹配值。原创 2023-04-13 20:08:53 · 2446 阅读 · 1 评论 -
OpenCV实例(三)答题卡识别
随着信息化的发展,计算机阅卷已经成为一种常规操作。在大型考试中,客观题基本不再需要人工阅卷。答题卡识别的基本实现原理如图所示,其主要包含以下步骤。(1)进行反二值化阈值处理,将后续操作中要使用的选项处理为前景(白色),将答题卡上其他不需要进行后续处理的位置处理为背景(黑色)。(2)将每个选项提取出来,并计算各选项的白色像素点个数。(3)筛选出白色像素点个数最大的选项,将该选项作为考生作答选项。(4)将考试作答选项与标准答案进行比较,给出评阅结果。原创 2023-04-13 19:50:02 · 2220 阅读 · 0 评论 -
OpenCV实例(二)手势识别
手势识别的范围很广泛,在不同场景下,有不同类型的手势需要识别,例如:● 识别手势所表示的数值。● 识别手势在特定游戏中的含义,如“石头、剪刀、布”等。● 识别手势在游戏中表示的动作,如前进、跳跃、后退等。● 识别特定手势的含义,如表示“OK”的手势、表示胜利的手势等。理论基础凸包和凸缺陷在图像处理中具有非常重要的意义,被广泛地用于图像识别等领域。逼近多边形是轮廓的高度近似,但是有时候,我们希望使用一个多边形的凸包来简化它。凸包和逼近多边形很像,只不过凸包是物体最外层的凸多边形。原创 2023-04-12 21:19:00 · 7734 阅读 · 7 评论 -
OpenCV实例(一)人脸检测
计算机视觉使很多任务成为现实,其中两项任务就是人脸检测(在图像中定位人脸)和人脸识别(将人脸识别为特定的人)。OpenCV实现了一些人脸检测和识别的算法。从安全到娱乐,这些技术在现实环境中都有应用。介绍OpenCV的一些人脸检测和识别功能,并定义特定类型的可跟踪物体的数据文件。具体来说,将研究Haar级联分类器,通过分析相邻图像区域之间的对比度,确定给定图像或子图像是否与已知类型匹配。原创 2023-04-09 17:48:17 · 4258 阅读 · 0 评论 -
OpenCV入门(三十一)快速学会OpenCV 30 K近邻算法
机器学习算法是从数据中产生模型,也就是进行学习的算法(下文也简称为算法)。我们把经验提供给算法,它就能够根据经验数据产生模型。在面对新的情况时,模型就会为我们提供判断(预测)结果。例如,我们根据“个子高、腿长、体重轻”判断一个孩子是个运动员的好苗子。把这些数据量化后交给计算机,它就会据此产生模型,在面对新情况时(判断另一个孩子能不能成为运动员),模型就会给出相应的判断。比如,要对一组孩子进行测试,首先就要获取这组孩子的基本数据。原创 2023-04-05 14:59:17 · 803 阅读 · 0 评论 -
OpenCV入门(三十)快速学会OpenCV 29 支持向量机SVM
支持向量机(Support Vector Machine, SVM)是一种二分类模型,目标是寻找一个标准(称为超平面)对样本数据进行分割,分割的原则是确保分类最优化(类别之间的间隔最大)。当数据集较小时,使用支持向量机进行分类非常有效。支持向量机是最好的现成分类器之一,这里所谓的“现成”是指分类器不加修改即可直接使用。在对原始数据分类的过程中,可能无法使用线性方法实现分割。支持向量机在分类时,把无法线性分割的数据映射到高维空间,然后在高维空间找到分类最优的线性分类器。原创 2023-04-05 14:15:05 · 1039 阅读 · 0 评论 -
OpenCV入门(二十九)快速学会OpenCV 28 K均值聚类
当我们要预测的是一个离散值时,做的工作就是“分类”。例如,要预测一个孩子能否成为优秀的运动员,其实就是要将他分到“好苗子”(能成为优秀的运动员)或“普通孩子”(不能成为优秀运动员)的类别。当我们要预测的是一个连续值时,做的工作就是“回归”。例如,预测一个孩子将来成为运动员的指数,计算得到的是0.99或者0.36之类的数值。机器学习模型还可以将训练集中的数据划分为若干个组,每个组被称为一个“簇(cluster)”。这些自动形成的簇,可能对应着不同的潜在概念,例如“篮球苗子”、“长跑苗子”。原创 2023-04-05 13:57:41 · 1031 阅读 · 0 评论 -
OpenCV入门(二十八)快速学会OpenCV 27 图像匹配
ORB的目标是优化和加速操作,包括非常重要的以旋转感知的方式利用BRIEF的步骤,这样匹配就得以改善,即使在训练图像与查询图像有非常不同的旋转状态的情况下也是如此。从这里开始,概念非常简单:遍历描述符并确定是否匹配,然后计算匹配的质量(距离),并对匹配进行排序,这样就可以在一定程度上显示前n个匹配,它们实际上匹配了两幅图像上的特征。接下来,我们将讨论蛮力匹配(用于特征匹配的算法)并举一个特征匹配的例子。关键点描述符是图像的一种表示,充当特征匹配的通道,因为你可以比较两幅图像的关键点描述符并发现它们的共性。原创 2023-04-05 13:27:52 · 1307 阅读 · 0 评论 -
OpenCV入门(二十七)快速学会OpenCV 26 SIFT算法
之前使用的cv2.cornerHarris,能很好地检测角点且有明显的优势,因为角就是角点,即使旋转图像也能检测到这些角点。但是,如果将图像缩放到更小或者更大的尺寸,图像的某些部分可能丢失或者获得高质量的角点。例如,如图所示是F1意大利大奖赛赛道的一幅图像的角点检测结果。如图所示是基于同一幅图像的一个更小版本的角点检测结果。会注意到角点是如何变得更紧凑的,可是,尽管我们获得了一些角点,但是也丢失了一些角点!原创 2023-04-01 13:44:26 · 904 阅读 · 0 评论 -
OpenCV入门(二十六)快速学会OpenCV 25 角点检测
Harris 角点检测 (Harris Corner Detection) 是最基础也是最重要的一种角点检测算法. 通过计算图像在 x, y 上平移的自相似性 (Self-Similarity) 来判断图像是否为角点。例如: 某图像的某个位置在 x / y 方向上做微小的滑动, 如果窗口内的灰度值都有较大变换, 那么这个位置就是角点。角点检测 (Corner Detection) 是图像的重要特征. 角点可以帮助我们实现图像对其, 图像拼接, 目标识别等等重要用途。·Harris:该算法适用于角点检测。原创 2023-04-01 13:15:56 · 680 阅读 · 0 评论 -
OpenCV入门(二十五)快速学会OpenCV 24 模板匹配
模板匹配是指在当前图像A内寻找与图像B最相似的部分,一般将图像A称为输入图像,将图像B称为模板图像。模板匹配的操作方法是将模板图像B在图像A上滑动,遍历所有像素以完成匹配。参数:image: 输入图像;templ: 输入模板;method: 方法;TM_SQDIFF: 计算平方差, 计算出来的值越小, 越相关;TM_CCORR: 计算相关性, 计算出来的值越大, 越相关;TM_CCOEFF: 计算相关系数, 计算出来的值越大, 越相关;原创 2023-03-30 21:11:41 · 286 阅读 · 0 评论 -
OpenCV入门(二十四)快速学会OpenCV 23 傅里叶变换
图像处理一般分为空间域处理和频率域处理。空间域处理是直接对图像内的像素进行处理。空间域处理主要划分为灰度变换和空间滤波两种形式。灰度变换是对图像内的单个像素进行处理,比如调节对比度和处理阈值等。空间滤波涉及图像质量的改变,例如图像平滑处理。空间域处理的计算简单方便,运算速度更快。频率域处理是先将图像变换到频率域,然后在频率域对图像进行处理,最后再通过反变换将图像从频率域变换到空间域。傅里叶变换是应用最广泛的一种频域变换,它能够将图像从空间域变换到频率域,而逆傅里叶变换能够将频率域信息变换到空间域内。原创 2023-03-30 20:46:29 · 1267 阅读 · 0 评论 -
OpenCV入门(二十三)快速学会OpenCV 22 直方图
从统计的角度讲,直方图是图像内灰度值的统计特性与图像灰度值之间的函数,直方图统计图像内各个灰度级出现的次数。从直方图的图形上观察,横坐标是图像中各像素点的灰度级,纵坐标是具有该灰度级(像素值)的像素个数。一幅图像由不同灰度值的像素组成,图像中灰度的分布情况是该图像的一个重要特征。图像的灰度直方图描述了图像中灰度的分布情况,能够很直观地展示出图像中各个灰度级所占的多少。上图就是一个灰度图像的灰度直方图,横坐标代表的是像素的灰度值的范围[0,255],越接近0表示图像越暗,越接近255表示图像越亮。原创 2023-03-28 20:15:59 · 805 阅读 · 2 评论 -
OpenCV入门(二十二)快速学会OpenCV 21 图像轮廓
作者:Xiou边缘检测虽然能够检测出边缘,但边缘是不连续的,检测到的边缘并不是一个整体。图像轮廓是指将边缘连接起来形成的一个整体,用于后续的计算。原创 2023-03-25 21:04:11 · 765 阅读 · 0 评论 -
OpenCV入门(二十一)快速学会OpenCV 20 图像金字塔
它将图像在每个方向上扩大为原图像的2倍,新增的行和列均用0来填充,并使用与“向下取样”相同的卷积核乘以4,再与放大后的图像进行卷积运算,以获得“新增像素”的新值。高斯金字塔的向下采样过程是:对于给定的图像先做一次高斯平滑处理,也就是先对原始图像进行高斯内核卷积操作,然后对图像进行采样,去除图像中的偶数行和偶数列,然后得到一幅图像,对这幅图像再进行上述操作,就可以得到高斯金字塔。如果我们把最大的图像放在底部、最小的放在顶部,看起来就像一座金字塔,故而得名图像金字塔,如图所示。原创 2023-03-25 20:11:38 · 911 阅读 · 0 评论 -
OpenCV入门(二十)快速学会OpenCV 19 对象测量
cv2.HuMoments() 用于由中心矩计算Hu矩,同时配合函数cv2.contourArea()函数计算轮廓面积,和cv2.arcLength()来计算轮廓或曲线长度。函数cv2.boundingRect返回四个参数(x,y)为矩形左上角的坐标,(w,h)是矩形的宽和高。但是要绘制这个矩形需要矩形的 4 个角点,可以通过函数 cv2.boxPoints() 获得,最后绘制得到旋转边界矩形。其中包含 :矩形左上角角点的坐标(x,y),矩形的宽和高(w,h),以及旋转角度。如面积,周长,质心,边界框等。原创 2023-03-23 20:13:51 · 901 阅读 · 0 评论 -
OpenCV入门(十九)快速学会OpenCV 18 圆环检测
霍夫变换除了用来检测直线外,也能用来检测其他几何对象。实际上,只要是能够用一个参数方程表示的对象,都适合用霍夫变换来检测。用霍夫圆变换来检测图像中的圆,与使用霍夫直线变换检测直线的原理类似。在霍夫圆变换中,需要考虑圆半径和圆心(x坐标、y坐标)共3个参数。在OpenCV中,采用的策略是两轮筛选。第1轮筛选找出可能存在圆的位置(圆心);第2轮再根据第1轮的结果筛选出半径大小。原创 2023-03-22 21:11:44 · 2461 阅读 · 0 评论 -
OpenCV入门(十八)快速学会OpenCV 17 直线检测
霍夫变换是一种在图像中寻找直线、圆形以及其他简单形状的方法。霍夫变换采用类似于投票的方式来获取当前图像内的形状集合,该变换由Paul Hough(霍夫)于1962年首次提出。最初的霍夫变换只能用于检测直线,经过发展后,霍夫变换不仅能够识别直线,还能识别其他简单的图形结构,常见的有圆、椭圆等。霍夫直线变换用来在图像内寻找直线,在OpenCV中,可以用函数cv2.HoughLines()和函数cv2.HoughLinesP()实现。原创 2023-03-21 20:44:09 · 3325 阅读 · 0 评论 -
OpenCV入门(十七)快速学会OpenCV 16 视频处理
OpenCV的视频I/O模块提供了一组用于读写视频或图像序列的类和函数。该模块将cv::VideoCapture和cv::VideoWriter类作为一层接口面向用户,这两个类下面是很多不同种类的后端视频I/O API,有效地屏蔽了后端视频I/O的差异性,简化了用户层的编程。在OpenCV中,视频的读操作是通过VideoCapture类来完成的,视频的写操作是通过VideoWriter类来实现的。原创 2023-03-19 10:42:39 · 1445 阅读 · 0 评论 -
OpenCV入门(十六)快速学会OpenCV 15 图像分割
图像分割主要是指将图像分成各具特性的区域并提取出感兴趣目标的技术。图像分割是数字图像分析中的重要环节,在整个研究中起着承前启后的作用,既是对所有图像预处理效果的一个检验,也是后续进行图像分析与解译的基础。图像阈值化分割是一种传统的、最常用的图像分割方法,因其实现简单、计算量小、性能较稳定,成为图像分割中最基本和应用最广泛的分割技术。它特别适用于目标和背景占据不同灰度级范围的图像,在很多情况下是进行图像分析、特征提取与模式识别之前必要的图像预处理过程。原创 2023-03-18 19:27:32 · 2758 阅读 · 0 评论 -
OpenCV入门(十五)快速学会OpenCV 14 阈值处理
有一种改进的阈值处理技术,其使用变化的阈值完成对图像的阈值处理,这种技术被称为自适应阈值处理。在进行阈值处理时,自适应阈值处理的方式通过计算每个像素点周围临近区域的加权平均值获得阈值,并使用该阈值对当前像素点进行处理。在使用函数cv2.threshold()进行阈值处理时,需要自定义一个阈值,并以此阈值作为图像阈值处理的依据。通过对比普通的阈值处理与自适应阈值处理可以发现,自适应阈值处理保留了更多的细节信息。但是,有时图像灰度级的分布是不均衡的,如果此时还将阈值设置为127,那么阈值处理的结果就是失败的。原创 2023-03-18 17:14:39 · 1211 阅读 · 0 评论 -
OpenCV入门(十四)快速学会OpenCV 13 边缘检测
边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。图像属性中的显著变化通常反映了属性的重要事件和变化,包括深度不连续、表面方向不连续、物质属性变化和场景照明变化。边缘检测特征是提取中的一个研究领域。图像边缘检测大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。有许多方法可以用于边缘检测,绝大部分可以划分为两类:基于查找的一类和基于零穿越的一类。原创 2023-03-16 21:30:16 · 3536 阅读 · 0 评论 -
OpenCV入门(十三)快速学会OpenCV 12 图像梯度
Sobel算子、Scharr算子、Laplacian算子都可以用作边缘检测,它们的核如图所示。Sobel算子和Scharr算子计算的都是一阶近似导数的值。通常情况下,可以将它们表示为:式中“|左-右|”表示左侧像素值减右侧像素值的结果的绝对值,“|下-上|”表示下方像素值减上方像素值的结果的绝对值。原创 2023-03-15 21:40:01 · 1008 阅读 · 0 评论 -
OpenCV入门(十二)快速学会OpenCV 11几何变换
我们在处理图像时,往往会遇到需要对图像进行几何变换的问题。图像的几何变换是图像处理和图像分析的基础内容之一,不仅提供了产生某些图像的可能,还可以使图像处理和分析的程序简单化,特别是图像具有一定的规律性时,一个图像可以由另一个图像通过几何变换来实现。所以,为了提高图像处理和分析程序设计的速度和质量,开拓图像程序应用范围的新领域,对图像进行几何变换是十分必要的。图像的几何变换不改变图像的像素值,而是改变像素所在的几何位置。原创 2023-03-15 20:41:53 · 907 阅读 · 0 评论 -
OpenCV入门(十一)快速学会OpenCV 10 形态学操作
形态学,即数学形态学(Mathematical Morphology),是图像处理过程中一个非常重要的研究方向。形态学主要从图像内提取分量信息,该分量信息通常对于表达和描绘图像的形状具有重要意义,通常是图像理解时所使用的最本质的形状特征。例如,在识别手写数字时,能够通过形态学运算得到其骨架信息,在具体识别时,仅针对其骨架进行运算即可。形态学处理在视觉检测、文字识别、医学图像处理、图像压缩编码等领域都有非常重要的应用。原创 2023-03-14 21:26:39 · 924 阅读 · 2 评论 -
OpenCV入门(十)快速学会OpenCV 9 图像平滑处理
而在方框滤波中,可以自由选择是否对均值滤波的结果进行归一化,即可以自由选择滤波结果是邻域像素值之和的平均值,还是邻域像素值之和。在尽量保留图像原有信息的情况下,过滤掉图像内部的噪声,这一过程称为对图像的平滑处理,所得的图像称为平滑图像。例如,滤波核的值可以为(3,3),表示以3×3大小的邻域均值作为图像均值滤波处理的结果,如下式所示。在进行均值滤波和方框滤波时,其邻域内每个像素的权重是相等的。在高斯滤波中,会将中心点的权重值加大,远离中心点的权重值减小,在此基础上计算邻域内各个像素值不同权重的和。原创 2023-03-14 20:21:51 · 1316 阅读 · 0 评论 -
OpenCV入门(九)快速学会OpenCV8漫水填充floodFill&ROI
floodFill漫水填充算法是在很多图形绘制软件中常用的填充算法,通常来说是自动选中与种子像素相连的区域,利用指定颜色进行区域颜色填充,常用于标记或分离图像的部分,以便做进一步分析和处理。漫水填充经常被用来标记或分离图像的一部分,以便对其进行进一步处理或分析,也可以用来从输入图像获取掩码区域,掩码会加速处理过程,或只处理掩码指定的像素点,操作的结果总是某个连续的区域。漫水填充法的原理很简单,就是从一个点开始遍历附近的像素点,填充成新的颜色,直到封闭区域内所有像素点都被填充成新颜色为止。原创 2023-03-13 21:11:31 · 1420 阅读 · 0 评论 -
OpenCV入门(八)快速学会OpenCV7图像运算
针对图像的加法运算、位运算都是比较基础的运算。但是,很多复杂的图像处理功能正是借助这些基础的运算来完成的。所以,牢固掌握基础操作,对于更好地实现图像处理是非常有帮助的。简单介绍一下加减法运算、逻辑运算,并使用它们实现了位平面分解、图像异或加密、数字水印、脸部打码/解码等实例。实例原图所示:test.jpgres.jpg。原创 2023-03-12 13:41:06 · 878 阅读 · 0 评论 -
OpenCV入门(七)快速学会OpenCV6色彩空间
色彩空间 (Color Space) 即以同的空间维度来表示某一色彩 (通常使用 3 个或者 4 个 值)。RGB图像是一种比较常见的色彩空间类型,除此以外还有一些其他的色彩空间,比较常见的包括GRAY色彩空间(灰度图像)、XYZ色彩空间、YCrCb色彩空间、HSV色彩空间、HLS色彩空间、CIELab色彩空间、CIELuv色彩空间、Bayer色彩空间等。每个色彩空间都有自己擅长的处理问题的领域,因此,为了更方便地处理某个具体问题,就要用到色彩空间类型转换。原创 2023-03-11 21:39:13 · 842 阅读 · 0 评论 -
OpenCV入门(六)快速学会OpenCV5图像处理基础(二)像素处理
像素是图像构成的基本单位,像素处理是图像处理的基本操作,可以通过位置索引的形式对图像内的元素进行访问、处理。原创 2023-03-10 21:41:38 · 1211 阅读 · 0 评论 -
OpenCV入门(五)快速学会OpenCV4文字绘制&边界填充
OpenCV中除了提供绘制各种图形的函数外,还提供了一个特殊的绘制函数,即在图像上绘制文字。这个函数是putText(),它是命名空间cv2中的函数,其中,参数img表示待绘制的图像;text表示待绘制的文字;org表示文本框的左下角;fontFace表示字体;fontScale表示尺寸因子,值越大文字越大;color表示字体的颜色(RGB);thickness表示线条宽度;lineType表示线型(4邻域或8邻域,默认8邻域);原创 2023-03-07 20:49:52 · 1372 阅读 · 0 评论