腐蚀和膨胀是最基本的形态学运算。

腐蚀和膨胀是针对白色部分(高亮部分)而言的。

膨胀就是对图像高亮部分进行“领域扩张”,效果图拥有比原图更大的高亮区域;腐蚀是原图中的高亮区域被蚕食,效果图拥有比原图更小的高亮区域。

膨胀

膨胀就是求局部最大值的操作,从图像直观看来,就是将图像光亮部分放大,黑暗部分缩小。

#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp> using namespace std;
using namespace cv; //膨胀
int main()
{
Mat img = imread("lol1.jpg");
namedWindow("原始图", WINDOW_NORMAL);
imshow("原始图", img);
Mat out;
//获取自定义核
Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); //第一个参数MORPH_RECT表示矩形的卷积核,当然还可以选择椭圆形的、交叉型的
//膨胀操作
dilate(img, out, element);
namedWindow("膨胀操作", WINDOW_NORMAL);
imshow("膨胀操作", out);
waitKey(0); }

可以看到,图像原来光亮的部分被放大了,黑暗的部分被缩小了。

腐蚀

#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp> using namespace std;
using namespace cv; //腐蚀
int main()
{
Mat img = imread("lol1.jpg");
namedWindow("原始图", WINDOW_NORMAL);
imshow("原始图", img);
Mat out;
//获取自定义核
Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); //第一个参数MORPH_RECT表示矩形的卷积核,当然还可以选择椭圆形的、交叉型的
//腐蚀操作
erode(img, out, element);
namedWindow("腐蚀操作", WINDOW_NORMAL);
imshow("腐蚀操作", out);
waitKey(0); }

可以看到,图像原来黑暗的部分被放大了,明亮的部分被缩小了。

开运算:先腐蚀再膨胀,用来消除小物体

闭运算:先膨胀再腐蚀,用于排除小型黑洞

形态学梯度:就是膨胀图与俯视图之差,用于保留物体的边缘轮廓。

顶帽:原图像与开运算图之差,用于分离比邻近点亮一些的斑块。

黑帽:闭运算与原图像之差,用于分离比邻近点暗一些的斑块。

opencv里有一个很好的函数getStructuringElement,我们只要往这个函数传相应的处理参数,就可以进行相应的操作了,使用起来非常方便。

下面列举一下相应的操作宏定义。

#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp> using namespace std;
using namespace cv; //高级形态学处理
int main()
{
Mat img = imread("lol1.jpg");
namedWindow("原始图", WINDOW_NORMAL);
imshow("原始图", img);
Mat out;
//获取自定义核
Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); //第一个参数MORPH_RECT表示矩形的卷积核,当然还可以选择椭圆形的、交叉型的 //高级形态学处理,调用这个函数就可以了,具体要选择哪种操作,就修改第三个参数就可以了。这里演示的是形态学梯度处理
morphologyEx(img, out, MORPH_GRADIENT, element);
namedWindow("形态学处理操作", WINDOW_NORMAL);
imshow("形态学处理操作", out);
waitKey(0); }

形态学梯度处理

这个是顶帽运算的效果

OpenCV探索之路(四):膨胀、腐蚀、开闭运算的更多相关文章

  1. opencv 双边模糊,膨胀腐蚀 开 闭操作

    #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; int main(int argc, ...

  2. OpenCV笔记(2)(高斯平滑、腐蚀和膨胀、开闭运算、礼帽和黑帽、Sobel及其他算子)

    一.高斯平滑(模糊) def gaussian_blur(image): # 设置ksize来确定模糊效果 img = cv.GaussianBlur(image, (5, 5), 0) cv.ims ...

  3. OpenCV3编程入门笔记(4)腐蚀、膨胀、开闭运算、漫水填充、金字塔、阈值化、霍夫变换

    腐蚀erode.膨胀dilate 腐蚀和膨胀是针对图像中的白色部分(高亮部分)而言的,不是黑色的.除了输入输出图像外,还需传入模板算子element,opencv中有三种可以选择:矩形MORPH_RE ...

  4. OpenCV计算机视觉学习(5)——形态学处理(腐蚀膨胀,开闭运算,礼帽黑帽,边缘检测)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 形态 ...

  5. 【OpenCV新手教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/23184547 作者:毛星云(浅墨) ...

  6. 学习 opencv---(10)形态学图像处理(2):开运算,闭运算,形态学梯度,顶帽,黒帽合辑

    上篇文章中,我们重点了解了腐蚀和膨胀这两种最基本的形态学操作,而运用这两个基本操作,我们可以实现更高级的形态学变换. 所以,本文的主角是OpenCV中的morphologyEx函数,它利用基本的膨胀和 ...

  7. opencv-图像形态学之开运算、闭运算、形态学梯度、顶帽、黑帽合辑

    转自:https://blog.csdn.net/poem_qianmo/article/details/24599073 1.1 开运算(Opening Operation) 开运算(Opening ...

  8. (转) 开运算opening_circle和闭运算closing_circle的异同

    从去除毛刺的策略看开运算opening_circle和闭运算closing_circle的异同 例一:毛刺在往外凸的面上 策略1:分割出黑色部分,然后通过开运算去掉毛刺,再通过原黑色部分区域减去开运算 ...

  9. opencv3.2.0形态学滤波之开运算、闭运算

    /* 一.开运算: (1)开运算,其实就是先腐蚀后膨胀的过程. (2)数学表达式:dst = open(src,element) = dilate(erode(src,element)) (3)作用: ...

随机推荐

  1. Intent及IntentFilter具体解释

    Intent用于启动Activity, Service, 以及BroadcastReceiver三种组件, 同一时候还是组件之间通信的重要媒介. 使用Intent启动组件的优势 1, Intent为组 ...

  2. 第五章——定时器Timer序言

    定时器很重要. 上家公司有用的,是用来做定期数据同步的. 以前老同学有用到,曾经就定时器讨论过一次,还给过一次他我关于spring-task的总结. 但是并没有意识到定时器与多线程的关系,或者说,上一 ...

  3. django的CMS系统(内容管理系统)

    一.什么是CMS系统 CMS具有许多基于模板的优秀设计,可以减少开发的成本. CMS的功能并不只限于文本处理,它也可以处理图片.Flash动画.声像流.图像甚至电子邮件档案. CMS还分各个平台脚本种 ...

  4. dedecms在php7下的使用方法,织梦dedecsm后台一片空白的解决方法

    前几天,一个老客户,最近升级了服务器,php到php7,把织梦dedecms转移到新服务器后,不能登录后台,让帮忙看一下. 我看了下他们的网站,使用的是织梦V57_UTF8_SP1前台页面是可以访问的 ...

  5. intellij 打开node项目 一直停留在scanning files to index....,或跳出内存不够的提示框

    说明: 在npm install 后,会出现Scanning files to index ...... 出现这个是正常的,但是一直不消失就不正常了.原因是npm install 后 node_mod ...

  6. Postgres中的物化节点之sort节点

    顾名思义,物化节点是一类可缓存元组的节点.在执行过程中,很多扩展的物理操作符需要首先获取所有的元组后才能进行操作(例如聚集函数操作.没有索引辅助的排序等),这时要用物化节点将元组缓存起来.下面列出了P ...

  7. HTML基础教程-简介

    关于html5笔记前言 之前有在W3school学习过html5以及javascript.为了和大家一块学习,为了回顾这些遗忘的基础,现在我把之前自己整理的笔记共享给大家.希望大家共同进步. HTML ...

  8. C#Linq技术中SelectMany(...)函数的内部实现的伪代码

    我们先来假设这种场景: 一个学校中有多个年级,一个年级有多个班级,一个班级里有多个学生.这里我们只需要班级.年级.和学生这三个概念: 让我们先来定义Class类和Student类: // 注意,Cla ...

  9. 动态WebApi

    动态WebApi实现了直接对Service的调用,其实没有跨过ApiController,只是我们自己创建出ApiController 实现主要分以下几步 一 对默认WebApi服务的替换 ApiGl ...

  10. Find the Maximum sum

    Given an array of n elements.Find the maximum sum when the array elements will be arranged in such w ...