这篇文章主要为大家展示了“C++ OpenCV如何实现腐蚀与膨胀”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C++ OpenCV如何实现腐蚀与膨胀”这篇文章吧。
腐蚀与膨胀
是OpenCV提供的两种最基本的形态学操作
形态学操作
简单来讲,形态学操作就是基于形状的一系列图像处理操作。通过将 结构元素 作用于输入图像来产生输出图像。
最基本的形态学操作有二:腐蚀与膨胀(Erosion 与 Dilation)。 他们的运用广泛:
通过以下图像,我们简要来讨论一下膨胀与腐蚀操作(译者注:注意这张图像中的字母为黑色,背景为白色,而不是一般意义的背景为黑色,前景为白色):

膨胀

背景(白色)膨胀,而黑色字母缩小了。
腐蚀
腐蚀在形态学操作家族里是膨胀操作的孪生姐妹。它提取的是内核覆盖下的相素最小值。
进行腐蚀操作时,将内核
划过图像,将内核
覆盖区域的最小相素值提取,并代替锚点位置的相素。
以与膨胀相同的图像作为样本,我们使用腐蚀操作。从下面的结果图我们看到亮区(背景)变细,而黑色区域(字母)则变大了

相关API

getStructuringElement
我们可以为我们的内核选择三种形状之一:
矩形: MORPH_RECT
交叉形: MORPH_CROSS
椭圆形: MORPH_ELLIPSE
然后,我们还需要指定内核大小,以及 锚点 位置。不指定锚点位置,则默认锚点在内核中心位置。
先上干货
腐蚀和肿胀的Demo演示效果:
代码演示
新建一个项目opencv-0010,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法.并加载我们常用的那个图片显示出来

我们先定义element用于做腐蚀和膨胀的操作
在上面设置两个参数

定义最大的点和当前的点
然后我们还用到了 createTrackbar这个函数.createTrackbar是Opencv中的API,其可在显示图像的窗口中快速创建一个滑动控件,用于手动调节阈值,具有非常直观的效果。
膨胀操作
定义膨胀的显示图像名称char showdilate[] = "outputdilate";
定义一个膨胀用的回调函数void cv_dilate(int, void*);

然后在Main方法中加入创建滑动条,并实现这个膨胀的方法

出现效果

当修改上面滑动条后可以看到很明显的膨胀效果

腐蚀操作
定义腐蚀的显示窗体名称和方法

我们写cv_erode的实现方法

然后在Main方法里面加入腐蚀的滑动条

显示效果,我们滑动条SIZE调到2

以上是“C++ OpenCV如何实现腐蚀与膨胀”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注天达云行业资讯频道!