形态学操作(1)--腐蚀和膨胀等操作的相关API(opencv学习记录--5)

1.腐蚀和膨胀

就不说腐蚀和膨胀的原理了,这方面已经有大佬讲的老好了:

参考博客:数学形态学运算——腐蚀、膨胀、开运算、闭运算_Chaolei3的博客-CSDN博客_膨胀运算

形态学操作的原理可以说都是基于腐蚀和膨胀的,所以主要搞明白这两个便可以了,但是运用方面我觉得还是多去看别人的案例和尝试吧。

1.腐蚀API

CV_EXPORTS_W void erode( InputArray src, OutputArray dst, InputArray kernel,
                         Point anchor = Point(-1,-1), int iterations = 1,
                         int borderType = BORDER_CONSTANT,
                         const Scalar& borderValue = morphologyDefaultBorderValue() );
  • src 传入图像
  • dst 输出图像
  • kernel 用来表示卷积核,一般用getStructuringElement函数来构建这个矩阵(不知道可以去看一下原理)
  • anchor 锚点位置(默认值Point(-1,-1)为中心位置)
  • iterations 腐蚀执行的次数
  • borderType 边缘类型

不同类型可以参考这篇博客:

python+opencv笔记(2)——边缘填充 - 老猫巴扎黑 - 博客园 (cnblogs.com)

  • borderValue 边缘值

函数的常见引用方式

Mat getStructuring = getStructuringElement(MORPH_RECT, Size(s, s), Point(-1, -1));
erode(img, img2, getStructuring);
//主要就是输入输出和卷积核

2.膨胀API

CV_EXPORTS_W void dilate( InputArray src, OutputArray dst, InputArray kernel,
                          Point anchor = Point(-1,-1), int iterations = 1,
                          int borderType = BORDER_CONSTANT,
                          const Scalar& borderValue = morphologyDefaultBorderValue() );

函数的传入参数和erode一样

最简单的引用也是给定输入输出和卷积核就行

2.其他形态学操作

开操作

对图像先进行腐蚀再进行膨胀然后输出

闭操作

对图像先进行膨胀再进行腐蚀然后输出

形态学梯度

膨胀后的结果减去腐蚀后的结果(基本梯度

其他还有内部梯度方向梯度(基本API不支持)

顶帽

原图像和开操作之间的差值图像

黑帽

闭操作和源图像的差值图像

相关API(上述都是用的同一个API)

morphologyEx(src, dest, CV_MOP_BLACKHAT, kernel);
 - Mat src – 输入图像
 - Mat dest – 输出结果
 - int OPT – CV_MOP_OPEN/ CV_MOP_CLOSE/ CV_MOP_GRADIENT / CV_MOP_TOPHAT/ CV_MOP_BLACKHAT 形态学操作类型
Mat kernel 结构元素
int Iteration 迭代次数,默认是1

CV_MOP_OPEN 开操作

CV_MOP_CLOSE 闭操作

CV_MOP_GRADIENT 梯度操作

CV_MOP_TOPHAT 顶帽

CV_MOP_BLACKHAT 黑帽

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值