![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenCV机器视觉
文章平均质量分 72
送外卖的、小哥
图像处理小白
展开
-
OpenCV实现按指定间隔抽取视频中的图像帧
习惯了C++语言的OpenCV突然用Python语言OpenCV还是感觉有点不适应,但是慢慢在写的过程中,觉得Python语言的风格也挺美的(但自己的写的还是很丑…),晚上回宿舍的剩余时间,记录一下最近用PythonOpenCV实现的视频抽帧小工具。原创 2022-09-22 09:34:22 · 3726 阅读 · 0 评论 -
OpenCV实现傅里叶描述子(下): 形状特征提取
简述在前面的更新中 OpenCV实现傅里叶描述子(上): 边界重建 有简单介绍了一下傅里叶描述子的内容,并利用边界的傅里叶描述子对其进行重建,使边界变得更加的平滑。但傅里叶描述子还是以其作为图像中形状的特征点得到广泛应用,例如手势识别,字符识别等。常见的形状描述子有链码,傅里叶描述子和Hu不变距等,前二是基于形状轮廓的,Hu不变距是基于形状区域的,通常的形状特征描述子需要具有平移、缩放、旋转不变性,但是直接傅里叶变换得到的描述子与形状的尺度,方向,和曲线的起点位置是有关的,因此需要对傅里叶描述子进行处理原创 2022-05-25 19:21:04 · 1933 阅读 · 2 评论 -
OpenCV实现傅里叶描述子(上):边界重建
简述傅里叶描述子在数字图像处理中是属于特征提取的内容,其最主要的作用之一是应用在形状识别中,如字符识别。其描述子组成的特征向量经过适当的处理可以具有旋转、平移和尺度不变性。这次博客的内容主要是边界重建,形状识别放在以后的更新当中,下面是关于一些学习内容的总结。内容总结及算法步骤:将由K个点组成的边界(轮廓点)的坐标对(x0,y0),(x1,y1),⋯ ,(xk−1,yk−1)(x_0,y_0),(x_1,y_1),\cdots,(x_{k-1},y_{k-1})(x0,y0),(x1,y1原创 2022-05-18 11:06:38 · 1547 阅读 · 0 评论 -
OpenCV实现击中击不中变换和形态学细化
1 击中击不中变换1.1 HMT概述形态学Hit-or-Miss是形状检测基本工具,只要结构元设置得当,就可以检测一些基本的形状图案,HMT变换只能作用于二值图像,结构元(核)元素值由0、1、-1组成。操作时,结构元在图像上滑动,覆盖一小片与核大小一样的区域,然后逐一对比,核的值为1时,覆盖区域对应位置必须为255,而核值为-1时,则必须为0,核值为0时0和255均可,如果覆盖区域所有的位置均满足上述要求,则表示击中,锚点位置设置为255,如果有任意一个位置不满足,则表示击不中,锚点位置设置为0。不原创 2022-03-28 22:15:14 · 4536 阅读 · 0 评论 -
OpenCV实现同态滤波
同态滤波是属于图像增强的一个小算法,其原理和代码实现在众多博客中均有提及,再此,只对学习中一些自认为有用的知识点进行总结。实现和学习过程中的一些总结:同态滤波类似于灰度变换,都是对灰度级进行动态范围压缩和对比度增强来改善图像的外观。图像f(x,y)f(x,y)f(x,y)可以表示为其照射分量i(x,y)i(x,y)i(x,y)和反射分量r(x,y)r(x,y)r(x,y)的乘积,即:f(x,y)=i(x,y)r(x,y)f(x,y)=i(x,y)r(x,y)f(x,y)=i(x,y)r(x,y)原创 2022-03-16 11:32:25 · 5197 阅读 · 1 评论 -
OpenCV实现双边滤波
双边滤波的数学原理在其他博客中很容易找到,再此不在赘述。仅仅记录一下自己对这个滤波器功能的一些总结。个人觉得这个滤波器十分优美和简洁,其特点:双边滤波同时考虑了空间(像素距离)和像素值层面的因素。双边滤波某一点的权重取值w(i,j,k,l)=wd(i,j,k,l)×wr(i,j,k,l)w(i,j,k,l)=w_d(i,j,k,l)\times w_r(i,j,k,l)w(i,j,k,l)=wd(i,j,k,l)×wr(i,j,k,l)。空间层面等价于高斯滤波,核中权重是由两点间距离来计算,离原创 2022-03-11 10:22:00 · 1151 阅读 · 0 评论 -
OpenCV实现图像基础频率域滤波
频率域滤波原创 2022-03-02 11:19:16 · 3560 阅读 · 0 评论 -
经典图像处理算法—区域生长法(功能实现)
一到期末杂事较多,许久未更新…记录一下区域生长法的学习过程,区域生长法是基于区域的分割方法,通过算法自动选取或者交互式选取种子点(即单个像素点),并规定所应用的谓词逻辑,将8邻接或4邻接并满足谓词逻辑的点进行合并,不断迭代,直至不满足谓词逻辑时,完成分割。最开始在实现这个功能的时候,在网上看了一些别人的代码,发现和自己理解的区域生长法有些出入,再此写下自己所理解的算法代码,仅代表个人意见。代码如下:/** function: 区域生长法; 递归版本* input: grayImage 源图灰度图原创 2021-12-25 16:19:10 · 3104 阅读 · 0 评论 -
自适应阈值canny边缘检测(功能实现)
学习记录…canny边缘检测是一种特别常用且性能优秀的边缘检测算法,相比于普通的边缘检测算法,canny获得的边缘较细且具有连续的边缘轮廓,为之后的一系列图像处理带来极大的便利。原创 2021-11-12 22:07:11 · 15011 阅读 · 8 评论 -
具有掩膜功能的大津阈值法(Otsu)
学习记录…前文说到大津阈值法是一种自适应的基于全局的阈值分割算法,只有在图像直方图分布为双峰的情况下才会呈现出一种比较好的分割效果,但是待分割图像直方图分布并不是每次都是理想的结果。可能会是光照的影响改变了原本为双峰的直方图分布,或者说背景本身就呈现出了两个灰度级,加上前景那就是三个灰度级了,等等一些情况都会造成使用Otsu分割失败。试验用图如下:如图所示:直接利用Otsu算法对原图进行分割,因为高灰度级分布的影响,我们想要的前景数字部分被归结为了背景,导致分割失败。期望分割图是利用上图中掩模部分直原创 2021-11-02 09:44:36 · 2451 阅读 · 0 评论 -
大津阈值法(OTSU)功能实现
具体的公式推导参见冈萨雷斯**《数字图像处理》**Otsu方法又称最大类间方差法,通过把像素分配像素分为两类或多类,计算类间方差,当方差达到最大值时,类分割线(即灰度值)就作为图像分割阈值。Otsu还有一个重要的性质,即它完全基于对图像直方图进行计算,这也使他成为最常用的阈值处理算法之一。算法步骤如下:...原创 2021-10-29 15:27:26 · 4004 阅读 · 0 评论 -
基于快速径向对称变换的圆环检测
记录平时学习的碎片…快速径向对称变换在原论文中的主要作用是用来作为图像特征点检测(面部特征、感兴趣区域),其依赖于梯度信息,来检测图像中高度径向对称的点。圆是旋转对称的,可以利用此算法来检测圆环的中心点。圆周上的点到圆心的距离相等,且圆周上的点的梯度方向垂直于切线指向圆心。基于以上两点结合径向对称变换算法内容,对圆周上的每一个点进行遍历生成该半径下的投影图像,找到投影图像中像素较大的值,便可确定圆心的位置。...原创 2021-10-24 20:18:14 · 726 阅读 · 0 评论 -
直方图均衡化(功能实现)
间断式更新一些无用的知识…直方图处理一直是传统图像处理中最重要的技术手段之一,直方图处理包括经典的直方图均衡化、直方图规定化、直方图比较、局部直方图的均衡等等。本章主要介绍直方图均衡,后续不断更新剩下的图像处理技术。直方图均衡化的作用:通过使均衡化后的图像的灰度级覆盖更宽的灰度范围,从而实现对源图像对比度的增强。直方图均衡化特点:整个实现过程直接从给定的图像中提取信息,而不需要规定任何参数,自适应程度高。数学原理:具体的内容可参见冈萨雷斯《数字图像处理》结合OpenCV,直方图均衡C/C++实现原创 2021-10-20 10:50:46 · 820 阅读 · 0 评论 -
利用findcontours实现仅查找内轮廓
第一次尝试写博客,就当做写一次随笔吧!最近在做一个小项目,需要检测目标轮廓,而且只需要内轮廓,OpenCV自带的轮廓检测函数findContours使用起来特别方便,利用轮廓之间层级关系即可实现内轮廓查找。findContours函数的具体使用方法自行查看相关教程和手册,下面仅对本算法相关的关键点进行一些强调和补充,如有错误,还请批评指正。findContours( InputOutputArray image, OutputArrayOfArrays contours,原创 2021-08-15 15:03:44 · 2363 阅读 · 1 评论