这篇文章给大家分享的是有关C++ OpenCV形态学操作的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
形态学相关的API
morphologyEx(src,dst,CV_MOP_BLACKHAT,kernel);
src---输入图像
dst---输出结果
int OPT --- CV_MOP_OPEN / CV_MOP_CLOSE / CV_MOP_GRADIENT / CV_MOP_TOPHAT / CV_MOP_BLACKHAT 形态学操作类型
Mat kernel --- 结构元素
int Iteration --- 迭代次数,默认是1
代码演示
新建一个项目opencv-0011,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法.并加载我们常用的那个图片显示出来

开操作-open
先腐蚀后膨胀 dst=open(src,element) = dilate(erode(src,element))
可以去掉小的对象,假设对象是前景色,背景是颜色,可以看到下面图通过开操作把小的东西给去掉了

代码操作

显示效果如下

由于我这张图片本身效果不明显,不过在西服那里可以看到把原来露出来一点的白衬衫通过开操作显示的更小了,如果我们把结构元素设置大一点,应该这一块白色衬衫区域就都腐蚀掉了.
我们把上面结构元素的Size(3,3)改为Size(5,5)来看看效果

这样看一下两张图的效果就比较明显了
闭操作
闭操作的原理与开操作正好相反
先膨胀后腐蚀(bin2) dst=close(src,element)=erode(dilate(src,element));
可以填充小的洞(fill hole),假设对象是前景色,背景色是黑色

代码操作

我们把原来的代码CV_MOP_OPEN的参数改为CV_MOP_COLSE
来看一下显示效果

可以看出来也是非常明显的
形态学梯度

代码操作

将红色标记的地方改为CV_MOP_GRADIENT
我们直接看到效果

顶帽 -- top hat

代码操作

生成的效果

黑帽
wa
代码操作

将参数改为CV_MOP_BLACKHAT
效果如下:

感谢各位的阅读!关于“C++ OpenCV形态学操作的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!