![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenCV
文章平均质量分 80
shlyyy
Keep Coding
展开
-
OpenCV17-图像形态学操作
根据两者的特性,将图像腐蚀和膨胀适当结合,便可以既去除图像中的噪声,又不缩小图像中主要区域的面积;在定义结构元素之后,将结构元素的中心点依次放到图像中每一个非零元素处,如果原图中某个元素被结构元素覆盖,但是该像素的像素值不与结构元素中心点对应的像素点的像素值相同,那么将原图中该像素的像素值修改为结构元素中心点对应点的像素值。对于输出图像中的每个像素位置(x, y),将结构元素B的中心与输入图像I的对应位置(x, y)对齐,然后在结构元素B覆盖的区域内选择输入图像中的最小像素值作为输出图像中的像素值。原创 2023-10-19 17:16:26 · 1537 阅读 · 3 评论 -
OpenCV16-图像连通域分析
函数可以实现图像中多个连通域的统计,但是只能通过标签将图像中的不同连通域分开,无法得到更多的统计信息。有时,我们希望得到每个连通域中心位置或者在图像中标记出连通域所在的矩形区域,该函数用于计算二值图像中连通域的个数,并在图像中不同的连通域用不同的数字标签标记,其中标签0表示图像中的背景色。函数返回图像中连通域的数目。根据两个像素相邻定义方式不同,得到的连通区域也不相同,因此,在分析连通域的同时,一定要声明是在哪种邻域条件下分析得到的结果。连通域是指图像中具有相同像素值并且位置相邻的像素组成的区域。原创 2023-10-16 17:13:18 · 1743 阅读 · 0 评论 -
OpenCV15-图像边缘检测:Sobel、Scharr、Laplace、Canny
图像的边缘指的是图像中像素灰度值突然发生变化的区域,如果将图像中的每一行像素和每一列像素都描述成一个关于灰度值的函数,那么图像的边缘对应在灰度值函数中是函数值突然变大的区域。通过上面的梯度公式,得到正数值表示像素值突然由低变高,得到的负数值表示像素值由高到低,这两种都是图像的边缘,因此,为了在图像中同时表示出这两种边缘信息,需要将计算的结果求取绝对值。下面的代码中,通过设置不同的阈值来比较阈值的大小对图像边缘检测效果的影响,可以发现,较高的阈值会降低噪声信息的影响,但是也会减少边缘信息。原创 2023-10-16 17:06:58 · 2049 阅读 · 4 评论 -
OpenCV14-图像平滑:线性滤波和非线性滤波
相比于均值滤波,中值滤波对于脉冲干扰信号和图像扫描噪声的处理效果更佳,同时,在一定条件下,中值滤波对图像的边缘信息保护效果更佳,可以避免图像细节的模糊,但是,当中值滤波尺寸变大之后,同样会产生图像模糊的效果。图像的线性滤波与图像的卷积类似,卷积操作中的卷积模版(卷积核)在图像滤波中称为滤波模版、滤波器或者领域算子。无论是图像卷积还是滤波,在原始图像上移动滤波器的过程中每一次的计算结果都不会影响到后面过程的计算结果,因此图像滤波是一个并行算法,在可以提供并行计算的处理器中可以极大地加快图像滤波的处理速度。原创 2023-10-15 18:05:36 · 2117 阅读 · 1 评论 -
OpenCV13-图像噪声:椒盐噪声和高斯噪声
考虑到椒盐噪声会在图像中的任何一个位置随机产生,因此对于椒盐噪声的生成,需要使用OpenCV中能够产生随机数的函数。OpenCV中也没有专门为图像添加高斯噪声的函数,对早在图像中添加椒盐噪声的过程,可以根据需求利用能够产生随机数的函数来完成在图像中添加高斯噪声的任务。椒盐噪声又称作脉冲噪声,他会随机改变图像中的像素值,其样子就像是在图像上随机地撒上一些盐粒和黑椒粒,因此被称为椒盐噪声。函数能够产生均匀分布或者高斯分布的随机数,可以利用该函数产生符合高斯分布的随机数,之后在图像中加入这些随机数即可。原创 2023-10-14 18:36:59 · 3650 阅读 · 2 评论 -
OpenCV12-图像卷积
下面的例子中,卷积结果偏移了2。归一化后的矩阵中每个元素的数值都在一定范围内。再利用相同的卷积模板对彩色图像进行卷积,虽然卷积前后图像内容一致,但是图像整体变得模糊一些。由于边界外没有任何图像信息,因此可以使用。第6个参数是像素边界外推标志,在。OpenCV中提供了。原创 2023-10-14 18:34:49 · 553 阅读 · 0 评论 -
OpenCV11-图像的模版匹配
的方式在图像中寻找模版图像,由于直方图不能直接反映图像的纹理,因此,如果两幅不同的模版图像具有相同的直方图分布特性,那么在同一幅图中对着两幅模版图像的直方图进行反向投影,最终结果将不具有参考意义。第三个参数为相似性矩阵,滑动窗口与模板的相似性系数存放在滑动窗口左上角第一个像素出,因此输出的相似性矩阵尺寸小于原始图像的尺寸,如果原始图像尺寸为。在图像中寻找模版图像时,可以直接通过比较图像像素的形式来搜索是否存在相同的内容,这种通过比较像素灰度值来寻找相同内容的方法称作图像的模版匹配。,那么相似性矩阵尺寸为。原创 2023-10-13 19:05:32 · 550 阅读 · 1 评论 -
OpenCV10-图像直方图:直方图绘制、直方图归一化、直方图比较、直方图均衡化、直方图规定化、直方图反射投影
直方图规定化与直方图均衡化相似,都是对图像的直方图分布形式进行改变,只是直方图均衡化后的图像是均匀分布的,而直方图规定化后的直方图可以任意指定,即在执行直方图规定化操作时,首先要知道变换后的灰度直方图分布形式,进而确定变换函数,直方图规定化有目的地增强某个灰度区间。如果一个图像的直方图都集中在一个区域那么整体图像的对比度比较小,不便于图像中纹理识别。如果通过映射关系,将图像中灰度值的范围扩大,增加原来两个灰度值之间的差值,就可以提高图像的对比度,进而将图像中的纹理凸显出来,这个过程称为图像直方图均衡化。原创 2023-10-13 18:56:26 · 1713 阅读 · 1 评论 -
OpenCV9-窗口交互操作
一种绘制轨迹的方法时每次调用回调函数获得鼠标位置时更改周围的图像像素值,这种方法比较直观但是回调函数有一定执行时间,因此当鼠标移动较快时绘制的图像轨迹会出现断点。下面的例子中:如果鼠标右键被按下,就会提示“点击鼠标左键才可以绘制轨迹”,如果单机鼠标左键,就会输出当前鼠标坐标,并将该坐标定义为某段轨迹的起始位置。之后按住左键移动鼠标,会绘制鼠标的移动轨迹。鼠标响应就是当鼠标位于对应图像窗口内时,时刻监测鼠标状态,当鼠标状态发生改变时,调用回调函数,并根据回调函数中的判断逻辑选择执行相应的操作。原创 2023-10-11 16:09:21 · 854 阅读 · 0 评论 -
OpenCV8-图像金字塔
由于每次图像的尺寸都缩小为原来的一半,图像尺寸缩小的速度非常快,因此常见的高斯”金字塔“的层数为3~6层。假设我们有了一个高斯图像”金字塔“,对于其中的第i层图像(高斯”金字塔“最下面为第0层),首先通过下采样得到一个尺寸缩小一半图像,即高斯”金字塔“中的第i+1层或者不在高斯”金字塔“中,之后对这福图像进行上采样,将图像尺寸恢复到第i层图像的大小,最后求取高斯”金字塔“第i层图像与经过上采样后的图像的残差图像,这个残差图像就是拉普拉斯”金字塔“的第i层图像。原创 2023-10-11 16:08:03 · 287 阅读 · 0 评论 -
OpenCV7-copyTo截取ROI
有时候,我们只对一幅图像中的部分区域感兴趣,而原图像又十分大,如果带着非感兴趣区域一次处理,就会对程序的内存造成负担,因此我们希望从原始图像中截取部分图像后再进行处理。我们将这个区域称作感兴趣区域(Region of Interest,ROI)。原创 2023-10-11 16:06:24 · 938 阅读 · 0 评论 -
OpenCV6-图形绘制
下面是绘制多边形的方法:可以一次绘制多个多边形。目前只支持英文文本的输出。原创 2023-10-11 16:04:18 · 574 阅读 · 0 评论 -
OpenCV5-图像几何变换
本程序中实现通过ImageWatch插件查看了拍摄图像二维码4个角点的坐标,并希望透视变换后二维码可以填满全部的图像,因此在程序中手动输入4个对应点的像素坐标。dsize用来调整输出图像大小,fx和fy一起也可以调整输出图像,因此两类参数在实际使用时只需要使用一类,当根据两个参数计算出来的输出图像尺寸不一致时,以dsize设置的图像尺寸为准。图像的尺寸变换实际上就是改变图像的长和宽,实现图像的缩放。可以将一个圆形图像变换成一个矩形图像,圆形图案边缘上的文字经过极坐标变换后可以垂直地排列在新图像的边缘。原创 2023-10-10 15:55:25 · 323 阅读 · 0 评论 -
OpenCV4-图像像素操作处理
二值图像的色彩种类少可以进行高度的压缩节省存储空间,将非二值图像经过计算变成二值图像的过程称为图像的二值化。图像的均值表示图像整体的亮暗程度,图像的平均值越大,整体越亮。OpenCV提供了求取两幅图像每一个像素较大或者较小灰度值的max()、min()函数,这两个函数分别比较两幅图像种每一个元素灰度值的大小,保留较大(较小)的灰度值。minMaxLoc函数的最后一个参数是寻找最值的掩码矩阵,用于标记寻找上述4个值的范围,参数默认值为noArray(),表示寻找范围是矩阵中的所有数据。原创 2023-10-09 11:39:20 · 304 阅读 · 0 评论 -
OpenCV3-颜色模型与转换-通道分离与合并
RGB图像:通过红、绿、蓝3中颜色不同比例的混合而成,图像以多通道的形式分别存储某一种颜色的红色分量、绿色分量和蓝色分量。在OpenCV中与RGB的顺序是相反的:第一个通道是蓝色分量,第二个通道是绿色分量,第三个通道是红色分量。3个通道对于颜色描述的范围是相同的,因此,RGB颜色模型的空间构成是一个立方体。如果3种颜色分量都为0,表示黑色。如果3种颜色分量都为255,表示白色。原创 2023-10-08 13:12:43 · 1183 阅读 · 0 评论 -
OpenCV2-Mat类、图像加载与保存
Mat类分为矩阵头和指向存储数据的矩阵指针两部分。矩阵头:包含矩阵的尺寸、存储方法、地址和引用计数等,矩阵头的大小是一个常数。在OpenCV中复制和传递图像时,只是复制了矩阵头和指向存储数据的指针Mat a;// 矩阵头// 矩阵指针指向像素数据Mat b = a;// 复制矩阵头和数据指针C++中使用引用计数管理矩阵数据。查看Mat类继承关系图:声明一个存放指定类型的Mat变量double(3, 3);原创 2023-10-08 12:00:39 · 1297 阅读 · 0 评论 -
OpenCV1-VS2022+OpenCV环境配置
2.安装看图拓展:Image Watch for Visual Studio 2022。4.添加附加依赖项:库目录下的文件。3.安装图像对比软件。1.安装VS2022。原创 2023-10-07 15:28:34 · 473 阅读 · 0 评论