OpenCV编程入门
文章平均质量分 84
新手学OpenCV3
我菜就爱学
某高校在校生,研究方向计算机视觉。刚刚入行的小白,还需要很大的空间提升
展开
-
【OpenCV】- 模板匹配(浩瀚星空只为寻找那一抹明月)
🤖🤖🤖🤖 欢迎浏览本博客 🤖🤖🤖🤖😆😆😆😆😆😆😆一名刚刚入行OpenCV的小白👻👻👻👻从事方向:计算机视觉🔔🔔我菜就爱学,分享有误,欢迎大佬指出🔔🔔🌏🌏🌏本篇介绍:CV中的模板匹配算法。原创 2022-09-18 15:23:11 · 1693 阅读 · 0 评论 -
【OpenCV】- 直方图反向投影
🤖🤖🤖🤖 欢迎浏览本博客 🤖🤖🤖🤖😆😆😆😆😆😆😆一名刚刚入行OpenCV的小白👻👻👻👻从事方向:计算机视觉🔔🔔我菜就爱学,分享有误,欢迎大佬指出🔔🔔。原创 2022-09-13 16:54:17 · 1412 阅读 · 0 评论 -
【OpenCV小练手】-仿造验证码去除干扰因子
🤖🤖🤖🤖🤖🤖🤖🤖😆😆😆😆😆😆😆一名刚刚入行OpenCV的小白👻👻👻👻🔔🔔我菜就爱学,分享有误,欢迎大佬指出🔔🔔最近这几天一直在回顾OpenCV的相关知识点,也算是做一次简单的总结的吧。这次小项目主要是针对知识点做的回顾。首先是提取图像中的,然后利用类似原理,可以消除验证码上面的干扰项。...原创 2022-08-28 15:46:54 · 1555 阅读 · 0 评论 -
【OpenCV】- 图像修复
说明:图像修复可以解决类似噪声或者是镜头上的灰尘或水滴或者旧照片上面的划痕等。原创 2022-08-21 09:00:00 · 2368 阅读 · 0 评论 -
【OpenCV】- 分水岭算法
将图像中像素根据一定的规则分为若干个cluster集合,每个集合包含一类对象如下,将两匹马从图像背景中抠出来。原创 2022-08-20 09:55:52 · 3986 阅读 · 0 评论 -
【OpenCV】-图像的矩
矩函数在图像分析中涉及很多地方,如模式识别、目标分类、目标识别与方位估计、图像编码与重构。一个从一幅数字图形中计算出来的矩集,通常描述了该图像的全局特征,并提供了大量的关于该图像不同类型的几何特性信息。比如大小、位置、方向以及形状等。...原创 2022-08-17 09:00:00 · 574 阅读 · 0 评论 -
【OpenCV】- 多边形将轮廓包围
说明:实际应用中,常常会将检测到的轮廓用多边形表示出来的需求。原创 2022-08-12 18:43:46 · 3457 阅读 · 0 评论 -
【OpenCV】-物体的凸包
如下:用人手图来举例说明凸缺陷概念。手周围深色的线描画出凸包,A到H被标出的区域是凸包的各个“缺陷”,这些凸度缺陷提供了手以及手状态的特征表现的方法。函数说明:返回默认的随机数生成器。解释:给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸边形,它是包含点集中所有的点。但想要在一个循环中产生很多随机数,那么使用此函数检索生成器,会很快。说明:随机生成3~103个坐标值随机的彩色点,然后将这些点连接起来。说明:convexHull()函数用于寻找图像点集中的凸包。...原创 2022-08-10 16:48:03 · 1576 阅读 · 0 评论 -
【OpenCV】-查找并绘制轮廓
canny之类边缘检测算法可以根据像素之间的差异,检测出轮廓边界的像素,但是并没有将轮廓作为一个整体。所以,这一章主要学习的是边缘像素组成轮廓。原创 2022-08-07 15:12:37 · 1760 阅读 · 0 评论 -
【OpenCV】直方图计算 & 均衡化直方图
最近把一部电视剧《天才基本法》看完了,学了一句话:“一以贯之的努力,不得懈怠的人生”,今天学直方图均衡化的时候,书上只介绍直方图均衡化后的效果,并没有讲解直方图。面向百度之后,也知道为什么书上不介绍了,理解有点困难。不过我还是花费一段时间啃啃了,哈哈~...原创 2022-08-06 16:23:25 · 1794 阅读 · 0 评论 -
【OpenCV】-仿射变换
仿射变换(Affine Map)又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间的过程。保持二维图形之间的相对位置保持不变,平行线依然是平行线,且直线上的点的位置顺序不变。如上,点1、2、3(在Image 1中形成一个三角形)与Image 2中的三个点是一一映射的关系,且它们仍然形成三角形,但形状已经和之前的不一样的,可以通过这样的两组三点求出仿射变换,然后把这种变换应用到图像中去。第五个参数:插值方法的标识符。第三个参数:2 x 3的变换矩阵,求得的仿射变换。.原创 2022-08-04 23:02:39 · 5838 阅读 · 3 评论 -
【OpenCV】-重映射
重映射是把一幅图像中某位置的像素放置到另一个图片指定位置的过程。为了完成重映射过程,需要获得一些插值为非整数像素的坐标,因为源图像与目标图像像素坐标不是一一对应的。g()是目标图像,f()是源图像,而h(x,y)是作用于(x,y)的映射方法函数。说明:下面是精简后的以remap函数为核心的示例程序。...原创 2022-08-03 16:01:48 · 1288 阅读 · 0 评论 -
【OpenCV】-霍夫变换
霍夫变换(Hough Transform)是图像处理技术中的一种特征提前技术,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换的结果。霍夫变换运行两个坐标空间之间的变换将在一个空间中具有相同形状的曲线或者直线映射到另一个坐标空间的一个点形成峰值,从而把检测任意形状的问题转化为统计峰值问题。霍夫变换是一种用来寻找直线的方法,在使用霍夫变换之前,首先要对图像进行边缘检测的处理,即霍夫变换的直接输入只能是二值图像。OpenCV中的霍夫线变换有三种:(1)一条直线在图像二维原创 2022-07-31 23:23:25 · 2997 阅读 · 1 评论 -
【OpenCV】-边缘检测汇总示例
汇总之前这一节还有一个scharr滤波器(也是算子)没有介绍,先介绍一下。。。原创 2022-07-30 16:43:56 · 416 阅读 · 0 评论 -
【OpenCV】-算子(Sobel、Canny、Laplacian)学习
开头一下:本篇博客主要介绍边缘检测所涉及的三大算子,分别是Sobel算子、Canny算子、Laplacian算子)。上篇博客python版CV也介绍了这三个算子的用法。原创 2022-07-27 21:54:06 · 1330 阅读 · 0 评论 -
【OpenCV】—阈值化
什么是阈值化?答在对各种图形进行处理操作的过程中,需要对图像中的像素做出取舍与决策,直接剔除一些低于或者高于一定值的像素。阈值可以被视作最简单的图像分割方法。如从一副图像中利用阈值分割出我们需要的物体部分。图像分割方法基于图像中物体与背景之间的灰度差异,其中分割属于像素级的分割。用法阈值的选取依赖于具体的问题。即物体在不同的图像中可能会有不同的灰度值。一旦找到需要分割的物体的像素点,可以对这些像素点设定一些特定的值来表示。...原创 2022-07-22 08:49:25 · 587 阅读 · 0 评论 -
【OpenCV】图片尺寸放缩示例程序
这次示例程序分别演示了用resize、pyrUp、pyrDown来让源图像进行放大缩小操作原图显示:通过不断放大缩小得到如下:原创 2022-07-12 15:52:38 · 202 阅读 · 0 评论 -
【OpenCV】—图像金子塔与图片尺寸缩放
如果想要将某种尺寸的图像转换为其他尺寸的图像:如放大或者缩小图像金字塔是图像中多尺寸表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。图像金字塔最初用于机器视觉和图像压缩,一幅图像的金字塔是一系列以金字塔形状排列的,分辨率逐步降低且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。如下:层级越高,则图像越小,分辨率越低。一般情况下有两种类型的图像金字塔常常出现在文献和以及实际运用中,它们分别是:区别:高斯金字塔用来向下降采样图像,而拉普拉原创 2022-07-12 14:45:01 · 1570 阅读 · 8 评论 -
【OpenCV】示例—漫水填充
序言: 这次的示例程序类似于PS中的魔棒工具效果,可以给鼠标点击的地方改变颜色。程序代码:未操作图像:鼠标点击漫水填充图像:掩膜描绘窗口原创 2022-07-09 16:10:31 · 775 阅读 · 0 评论 -
【OpenCV】漫水填充
漫水填充法是一种特定的颜色填充连通区域,通过设置可以连通像素的上下限以及连通方式来达到不同的填充效果的方法。漫水填充经常被用来标记或者分离图像的一部分,以便对其进行进一步处理或分析,也可以用来从输入图像获取掩码区域,掩码会加速处理过程,或只处理掩码指定的像素点,操作的结果总是某个连续的区域。所谓漫水填充,就是自动选中了和种子点相连的区域,接着将该点区域替换成指定的颜色,经常用来标记或者分离图像的一部分进行处理或分析。漫水填充也可以用来从输入图像获取掩码区域,掩码会加速处理过程,或者只处理掩码指定的像素点。原创 2022-07-08 11:12:06 · 3147 阅读 · 0 评论 -
【OpenCV】形态学滤波(2):开运算、形态学梯度、顶帽、黑帽
开运算(Opening Operation),其实就是先腐蚀后膨胀的过程,其数学表达式如下:dst=open(src,element)=dilate(erode(src,element))dst=open(src,element)=dilate(erode(src,element))dst=open(src,element)=dilate(erode(src,element))作用:开运算可以消除小物体,在纤细点处分离物体,并且在平滑较大物体的边界的同时不明显改变其面积。示例代码:先膨胀后腐蚀的过原创 2022-07-06 14:30:36 · 1719 阅读 · 0 评论 -
【OpenCV】—形态学滤波(1):腐蚀与膨胀
学习之前补充一个知识点: 形态学(morphology)一词通常表示生物学的一个分支,该分支主要研究动植物的形态和结构。而我们图像处理的形态学,往往指的是数学形态学。 数学形态学(Mathematical morphology)是一门建立在格伦和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论。其基本的运算包括:二值腐蚀和膨胀、二值开闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换、灰值开闭运算、灰值形态学梯度等。 简单来说:形态学操作就原创 2022-07-03 15:53:02 · 955 阅读 · 0 评论 -
【OpenCV】-5种图像滤波的综合示例
序言: 这一篇文章是对之前学习线性滤波和非线性滤波的回顾。之前都是分章节介绍滤波器对图片的处理,这一小节将前文介绍的知识点以代码为载体,展现给大家,用滑动条的方式来控制学习到的各种滤波(方框滤波、均值滤波、高斯滤波、中值滤波、双边滤波)的参数值。通过滚动条来控制图像在各种平滑处理下的模糊度,不仅可以与原图对比看出效果,而且也有一定的可玩性,哈哈。话不多说,上代码(1)原图与方框滤波对比(2)原图与均值滤波对比(3)原图与高斯滤波对比(4)原图与中值滤波对比(5)原图与双边滤波对比综上:观察发原创 2022-07-01 15:33:31 · 557 阅读 · 0 评论 -
【OpenCV】—非线性滤波:中值滤波、双边滤波
上节学到 线性滤波,即两个信号之和的响应和它们各自响应之后相等。也就是每个像素的输出值是一些输入像素的加权和。线性滤波器易于构造,并且易于从频率响应角度来进行分析。 当噪声是散粒噪声而不是高斯噪声,或者图像偶尔会出现很大的值的时候,用高斯滤波对图像进行模糊的话,噪声像素是不会被去除的,它们只是转换为更为柔和但仍然可见的散粒。 中值滤波(Median filter) 是一种典型的非线性滤波技术,基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值,该方法在去除脉冲噪声、椒盐噪声的同时又能保留图像原创 2022-07-01 00:02:26 · 1320 阅读 · 0 评论 -
【OpenCV】—线性滤波:方框滤波、均值滤波、高斯滤波
平滑处理(smoothing)也称模糊处理(bluring),是一种简单且使用频率很高的图像处理方法。平滑处理的用途有很多,最常见的是用来减少图像上的噪点或者失真。处理降低图像分辨率时,平滑处理是好用的方法。(1)图像噪声:指存在于图像数据中的不必要的或多余的干扰信息。噪声的存在严重影响了遥感图像的质量,因此在图像增强处理和分类处理之前,必须予以纠正。[1]图像中各种妨碍人们对其信息接受的因素即可称为图像噪声 。噪声在理论上可以定义为“不可预测,只能用概率统计方法来认识的随机误差”。(2)图像滤波:指在尽量原创 2022-06-28 16:14:59 · 3282 阅读 · 2 评论 -
【OpenCV】—输入输出XML和YAML文件
在这里,第五章的学习已经结束了,明天前进第六章《《掌握imgproc组件》》,扬帆起航,继续加油。。。。。原创 2022-06-22 16:34:29 · 697 阅读 · 0 评论 -
【OpenCV】—离散傅里叶变换
序言:离散傅里叶变换(DFT ) 是指傅里叶变换在时域和频域上都呈现离散的形式,将时域信号的采样变换为在离散时间傅里叶变换(DTFT)频域的采样。在形式上,变换两端的序列是有限长的,而实际上这两组序列都应当被认为是离散周期信号的主值序列。即使对有限长的离散信号做DFT,也应当对其经过周期延拓成为周期信号再进行变换。(其实介绍一大推,我一点都不懂)继续向下看:傅里叶变换就是一个用来将函数分解的工具,任一函数都可以表示成无数个正弦和余弦函数的和的形式。二维图像的傅里叶变换可以有以下数学公式:其中: f是空间原创 2022-06-21 14:25:22 · 925 阅读 · 0 评论 -
傅里叶变换原理——与时间无关的故事
序言: 学习OpenCV的时候,正巧学到离散的傅里叶变换,书上是这样介绍的:说实话: 作为新手,我是一点看不懂,就在知乎看到了大佬写的文章 知乎专栏:与时间无关的故事 ,感觉非常好写的,我就转载了一下,希望更多的人学习。这篇文章的核心思想就是:要让读者在不看任何数学公式的情况下理解傅里叶分析。傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维模式。但不幸的是,傅里叶分析的公式看起来太复杂了,所以很多大一新生上来就懵圈并从此对它深恶痛绝。老实说,这么有意思的东西居然成了大学里的杀手课转载 2022-06-17 22:23:42 · 1173 阅读 · 0 评论 -
【OpenCV】—分离颜色通道、多通道图像混合
补充:split函数的C++版本有两个原型。分别是:第一个参数:InputArray类型的m或者const Mat&类型的src,填写我们需要进行分离的多通道数组第二个参数:OutArrayOfArrays 类型mv,填函数的输出数组或者输出的vector容器split函数分割多通道数组转换成独立的单通道数组,公式如下:mv[c](I)=src(I)cmv[c](I)=src(I)cmv[c](I)=src(I)c示例展示:原图通道分离...原创 2022-06-16 11:37:18 · 739 阅读 · 0 评论 -
【OpenCV】—图像对比度、亮度值调整
算子:图像处理算子都是一个函数,它接受一个或多个输入图像,并产生输出图像。算子的一般形式:g(x)=h(f(x))或者g(x)=h(f0(x).....fn(x))g(x)=h(f(x))或者g(x)=h(f0(x).....fn(x))g(x)=h(f(x))或者g(x)=h(f0(x).....fn(x))两种最常用的点操作(点算子)是乘上一个常数(对应对比度的调节)以及加上一个常数(对应亮度值的调节)。公式如下:g(x)=a∗f(x)+bg(x)=a*f(x)+bg(x)=a∗f(x)+b原创 2022-06-16 11:31:36 · 5745 阅读 · 0 评论 -
【OpenCV】—ROI区域图像叠加&图像混合
(1)定义ROI(Rect)使用表示矩形区域的Rect。他指定矩形的左上角坐标(构造函数的前两个参数)和矩形的长宽(构造函数的后两个参数)指定感兴趣行和列的范围(Range)。Range是指从起始索引到终止索引(不包含终止索引)的一连段连续序列。cRange可以用来定义Range2、线性混合操作g(x)=(1−a)fa(x)+af3(x)g(x)=(1-a)fa(x)+af3(x)g(x)=(1−a)fa(x)+af3(x)我们通过在范围0-1之间改变alpha值,来对两幅图像(f0(原创 2022-06-14 11:41:54 · 1658 阅读 · 0 评论 -
OpenCV—访问图像中的像素
序言: OpenCV3编程入门已经进入第五章 (Core组件进阶) 学习了,后面也越来越多对图像的处理,这一节主要是对像素的认识。图像矩阵的大小取决于所用的颜色模型,也就是说取决于所用的通道数。如下灰度图像:对于多通道的图像,矩阵中的列会包含多个子列,子列个数与通道数相等。(1)问题提出:对于单通道像素,有256个不同的值,若三通道图像,颜色的存储值就有一千六百万多种。解决: 如此之多的颜色数值,但是达到同样效果的只占很小一部分。颜色空间缩减(color space reduction)可以大大降低运算复杂原创 2022-06-09 16:57:01 · 2086 阅读 · 0 评论 -
OpenCV—学习基本绘图
Size类的相关源代码:Size_模版类的定义:示例:4、矩形的表示:Rect()类Size():返回值为Size;area():返回矩形的面积;contains(Point):判断点是否在矩形内;inside(Rect):判断矩形是否在该矩形内tl():返回左上角坐标br():返回右下角点坐标(2)求矩阵的交集和并集(3)矩形平移操作(4)矩形缩放操作5、颜色空间转换:cvColor()函数原型如下:第一个参数:输入图像。第二个参数:输出图像第三个参数:颜原创 2022-06-07 10:49:56 · 2081 阅读 · 0 评论 -
OpenCV—数据结构与基本绘图(一)
(1)优点:(2)Mat简介:为了解决以上开销大的问题,OpenCV使用了引用计数机制:让每个Mat对象有自己的信息头,通过矩阵指针指向同一地址,让它们共享一个矩阵。以上代码中的所有Mat对象最终都指向同一个也是唯一一个数据矩阵。附加:若是矩阵属于多个Mat对象,通过引用计数机制来实现,复制一次Mat对象的信息头,增加一次引用次数。当一个头释放后,计数减一;计数为0时,矩阵就会被清理。此时若想复制矩阵本身(不只是信息头和矩阵指针)(3)补充:上面(1)和(2)的内容是书上讲的,新手小白看的不是很懂原创 2022-06-04 21:44:18 · 373 阅读 · 0 评论 -
OpenCV—HighGUI图形用户界面初步
第三章:HighGUI图形用户界面初步原创 2022-06-01 16:11:08 · 714 阅读 · 0 评论 -
OpenCV报错: cv::Exception,位于内存位置 0x00000078226FEE58 处。
通过对前面Mat类、imread函数、imshow函数、imwrite函数等的学习,写一个综合项目:把一张logo的图片嵌入到另一张图片中。报出这样的错误,并且自动跳转到mat.inl.hpp这个源码中1、首先我就去百度,查看是不是Mat类的用法错误,就去百度了解了一下:2、我就开始对源码就行一点一点的运行,发现到这行代码就会报错这我当初就纳闷了,明明是看着书写的,怎么会错呢,于是乎我就百度一下,看了一下这个【博主】,按照他的意思就是Rect的矩形坐标设置太大了,logo图跑出去了,下面Rect的具体原创 2022-06-01 10:45:28 · 2060 阅读 · 2 评论 -
OpenCV编程入门——启程前的准备
一、OpenCV官方例程与赏析1、彩色目标跟踪:Camshift(Continuously Adaptive Mean-SHIFT)说明:程序的用法是根据鼠标框选区域的色度光谱来进行摄像头读入视频的目标跟踪。2、光流:optical flow说明:光流法是目前运动图像分析的重要方法,用来指定时变图像中模式的运动速度,因为当物体在运动时,在图像上对应的亮度模式也在运行。这种图像亮度模式的表观运动(apparent motion)就是光流。光流表达了图像的变化,由于它包含了目标运动的信息。3、点追踪原创 2022-05-29 10:48:05 · 533 阅读 · 0 评论 -
快速上手OpenCV小程序
序言:编写这些小程序有点跟写的意思,也是让新手提前适应OpenCV的基础用法。文章目录1、图像显示2、图像腐蚀3、blur图像模糊4、canny边缘检测5、读取并播放视频一、图像显示说明:用imread函数载入到新版本的图像存储数据结构Mat类(后期会详细介绍)中,然后用imshow函数显示即可。#include<opencv2/opencv.hpp>using namespace cv;int main(){ //载入图片 Mat src = imread("D:\原创 2022-05-27 22:04:31 · 1402 阅读 · 2 评论 -
OpenCv、Vis Studio安装与配置
序言: 以这篇文章作为新一阶段学习的开端。新知识的学习,到技术的娴熟的掌握。从入门逐渐精通。加油 Visual studio安装以及配置1、VS官网下载地址:Visual studio2、下载之后安装的步骤如下:到官网之后选择Community下载下载之后点击exe运行。然后勾选自己需要的组件。接下来设置组件的安装位置:如果不选择默认C盘的话,安装一个文件夹会报错。下载之后启动:最后创建一个C的项目,写一个“你好”创建之后找到如下的界面,找到源文件,右键:创建新项目的时候原创 2022-05-26 21:56:25 · 625 阅读 · 0 评论