OpenCV每日函数 图像过滤模块 (6) erode腐蚀函数
一、概述
使用特定的结构元素腐蚀图像。该函数使用指定的结构元素腐蚀源图像,该结构元素确定取最小值的像素邻域的形状:
侵蚀可以应用数次(迭代)。 在多通道图像的情况下,每个通道都是独立处理的。
膨胀:
腐蚀:
二、erode函数
1、函数原型
cv::erode (InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1,-1), int iterations=1, int borderType=BORDER_CONSTANT, const Scalar &borderValue=morphologyDefaultBorderValue())
2、参数详解
src | 输入图像; 通道数可以是任意的,但深度应该是 CV_8U、CV_16U、CV_16S、CV_32F 或 CV_64F 之一。 |
dst | 输出与 src 大小和类型相同的图像。 |
kernel | 用于侵蚀的结构元素; 如果 element=Mat(),则使用 3 x 3 矩形结构元素。 可以使用 getStructuringElement 创建内核。 |
anchor | 锚点在元素中的位置; 默认值 (-1, -1) 表示锚点位于元素中心。 |
iterations | 应用侵蚀的次数。 |
borderType | 像素外推法,请参阅 BorderTypes。 不支持 BORDER_WRAP。 |
borderValue | 边界不变的情况下的边界值 |
三、OpenCV源码
1、源码路径
opencv\modules\imgproc\src\morph.dispatch.cpp
2、源码代码
从源码可知最终是调用了morph函数,其它诸如开闭运算等等均是调用这个函数。
void erode( InputArray src, OutputArray dst, InputArray kernel,Point anchor, int iterations,int borderType, const Scalar& borderValue )
{CV_INSTRUMENT_REGION();CV_Assert(!src.empty());morphOp( MORPH_ERODE, src, dst, kernel, anchor, iterations, borderType, borderValue );
}
static void morphOp( int op, InputArray _src, OutputArray _dst,InputArray _kernel,Point anchor, int iterations,int borderType, const Scalar& borderValue )
{CV_INSTRUMENT_REGION();CV_Assert(!_src.empty());Mat kernel = _kernel.getMat();Size ksize = !kernel.empty() ? kernel.size() : Size(3,3);anchor = normalizeAnchor(anchor, ksize);CV_OCL_RUN(_dst.isUMat() && _src.dims() <= 2 && _src.channels() <= 4 &&borderType == cv::BORDER_CONSTANT && borderValue == morphologyDefaultBorderValue() &&(op == MORPH_ERODE || op == MORPH_DILATE) &&anchor.x == ksize.width >> 1 && anchor.y == ksize.height >> 1,ocl_morphOp(_src, _dst, kernel, anchor, iterations, op, borderType, borderValue) )if (iterations == 0 || kernel.rows*kernel.cols == 1){_src.copyTo(_dst);return;}if (kernel.empty()){kernel = getStructuringElement(MORPH_RECT, Size(1+iterations*2,1+iterations*2));anchor = Point(iterations, iterations);iterations = 1;}else if( iterations > 1 && countNonZero(kernel) == kernel.rows*kernel.cols ){anchor = Point(anchor.x*iterations, anchor.y*iterations);kernel = getStructuringElement(MORPH_RECT,Size(ksize.width + (iterations-1)*(ksize.width-1),ksize.height + (iterations-1)*(ksize.height-1)),anchor);iterations = 1;}Mat src = _src.getMat();_dst.create( src.size(), src.type() );Mat dst = _dst.getMat();Point s_ofs;Size s_wsz(src.cols, src.rows);Point d_ofs;Size d_wsz(dst.cols, dst.rows);bool isolated = (borderType&BORDER_ISOLATED)?true:false;borderType = (borderType&~BORDER_ISOLATED);if(!isolated){src.locateROI(s_wsz, s_ofs);dst.locateROI(d_wsz, d_ofs);}hal::morph(op, src.type(), dst.type(),src.data, src.step,dst.data, dst.step,src.cols, src.rows,s_wsz.width, s_wsz.height, s_ofs.x, s_ofs.y,d_wsz.width, d_wsz.height, d_ofs.x, d_ofs.y,kernel.type(), kernel.data, kernel.step, kernel.cols, kernel.rows, anchor.x, anchor.y,borderType, borderValue.val, iterations,(src.isSubmatrix() && !isolated));
}
四、效果图像示例
OpenCV每日函数 图像过滤模块 (6) erode腐蚀函数相关推荐
- OpenCV每日函数 图像过滤模块 (5) dilate膨胀函数
一.概述 通过使用特定的结构元素来扩大图像.该函数使用指定的结构元素扩展源图像,该结构元素确定取最大值的像素邻域的形状: 膨胀可以应用数次(迭代). 在多通道图像的情况下,每个通道都是独立处理的. 膨 ...
- OpenCV每日函数 图像过滤模块 (8) GaussianBlur高斯模糊函数
一.概述 使用高斯滤镜模糊图像.该函数将源图像与指定的高斯核进行卷积. 在图像处理中,高斯模糊(也称为高斯平滑)是通过高斯函数(以数学家和科学家卡尔弗里德里希高斯命名)对图像进行模糊处理的结果. 它是 ...
- OpenCV每日函数 图像过滤模块 (1) bilateralFilter函数(双边滤波)
一.概述 过滤可能是图像处理和计算机视觉中最基本的操作.在术语"过滤"的最广义上,过滤图像在给定位置的值是输入图像在同一位置的小邻域中的值的函数. 例如,高斯低通滤波计算邻域中像素 ...
- 计算机绘制函数图像的心得,用计算机绘制函数图像
免费 用计算机绘制函数图像 利用计算机软件可以便捷.迅速地绘制各种函数图像.不同的计算机软件绘制函数图像的具体操作不尽相同,但都是基于我们熟悉的描点作图.即给子变量赋值,用计算法则算出相应的函数值,再 ...
- 用计算机绘制函数图像ppt,如何利用描点画函数图像课件制作
原标题:如何利用描点画函数图像课件制作 函数是中学数学中的一个重要内容,而描点画图不仅是学生在课堂上学习函数的重要方法,也是学生在今后学习课本外其他函数的重要途径.下面介绍描点画函数图像课件制作方法, ...
- 用计算机画有常数的函数图像,信息技术应用 用计算机画函数图象教学实录及点评...
房登琼 [ 四川省-德阳市-中江县 县级优课] 地区: 四川省 - 德阳市 - 中江县 学校:中江县富兴镇初级中学 共1课时 信息技术应用 用计算机画函数图象">信息技术应用 用计 ...
- 用c语言绘制数学函数图像,用c语言画数学函数图像.DOC
用c语言画数学函数图像 时间:2007-02-13 作者:佚名 编辑:本站 点击: 2231 [评论] 符 outtextxy(CX+3,440-40*i,s); //以字符形式输出纵轴上的单位数字 ...
- 用计算机画有常数的函数图像,信息技术应用 用计算机画函数图象ppt配用优秀获奖教案...
胡霞 地区: 甘肃省 - 武威市 - 古浪县 学校:古浪县定宁初级中学 共1课时 信息技术应用 用计算机画函数图象">信息技术应用 用计算机- 初中数学 人教2011课标版 ...
- python分段函数图像画法_数值实验分段函数图像-Python绘图
一.函数说明 在使用python作图时,应用最广的就是matplotlib包,但我们平时使用matplotlib时主要是画一些简单的图表,很少有涉及分段函数.本次针对数值实验中两个较为复杂的函数,使用 ...
最新文章
- 有关 Form 的一些代码的标准写法
- extjs 表单验证实例
- 2017 3月21日,下午
- 贪吃蛇代码c 语言,刚学C语言,想写一个贪吃蛇的代码
- php输出下载地址,PHP实现的文件直接输出下载
- [Flex]浅析Mate flex framework在实际项目中的应用(二)
- [LeetCode#81]Search in Rotated Sorted Array II
- simulink中嵌入m文件
- 你必备的39个大数据可视化工具
- Neo4j的开发方式
- 三角形面积计算机方法,计算三角形面积 免费版
- TI/德州仪器 SN74AHC1G04DBVR 单路反向器闸
- Java 10大骚操作写法,亮瞎boss的双眼!
- 【算法+LeetCode题解+剑指Offer题解】算法思想、排序搜索、数据结构、数学、特殊解法、设计(全总结)
- 隐形眼镜的评价分析报告
- 【Luogu1879】玉米田
- 中高级Java面试题解析,剑指BATJ,提前祝大家程序员节快乐
- android向DDR读写数据,透过数据看本质 - 被“吹爆”的LPDDR5内存究竟有多强大?...
- 计算机操作系统第一章
- 分享一些下载HTML模板的网站吧
热门文章
- CPU和CPU寄存器和CPU缓存和CPU内存管理器、RAM、hard disk。以及堆栈、内存映射。
- 通过文献计量学助您发表高影响因子论文—基于Citespace和vosviewer文献计量学可视化SCI论文高效写作方法
- K近邻模型、KNN算法1-构建预测模型
- 全选主元matlab,全选主元高斯-约当法实矩阵求逆及传统方法求逆
- 应用程序迁移_加速绿色IT-关于应用程序迁移和重新托管的实用指南
- 设计一个类代表二维空间的一个点,设计一个类代表二维空间的一个圆。要求两个成员变量。一个是圆心,一 个是半径,提供计算面积的方法。为上述Cricle类添加一个方法,计算一个点(Point)是否在圆内
- 无线局域网攻防之Wi-Fi破解
- 工作小笔记——使用Cartographer建图和调优
- SAP CRM BOL entity deletion - root node and sub node
- 音频线视频线和同轴电缆的关系(同轴线除了外面的屏蔽网还有中间的绝缘塑料体,而音频线一般只有外面的屏蔽网)