本系列文章的部分文字叙述转载@浅墨_毛星云 出品。
膨胀与腐蚀概念问题借鉴于下面的百度云链接:
链接: http://pan.baidu.com/s/1i37nXSL 密码: 3xnd
腐蚀和膨胀是对白色部分(高亮部分)而言的,不是黑色部分。膨胀就是图像中的高亮部分进行膨胀,“领域扩张”,效果图拥有比原图更大的高亮区域。腐蚀就是原图中的高亮部分被腐蚀,“领域被蚕食”,效果图拥有比原图更小的高亮区域。
在进行讲解膨胀腐蚀之前先看下原图和进行膨胀腐蚀之后的效果图。
膨胀的原图与效果图:
腐蚀的原图与效果图:
一,膨胀
此图膨胀的目的是去除白色短袖上面的污渍。
膨胀的代码如下:
- //-----------------------------------【头文件包含部分】---------------------------------------
- // 描述:包含程序所依赖的头文件
- //----------------------------------------------------------------------------------------------
- #include <opencv2/core/core.hpp>
- #include<opencv2/highgui/highgui.hpp>
- #include<opencv2/imgproc/imgproc.hpp>
- #include <iostream>
- //-----------------------------------【命名空间声明部分】---------------------------------------
- // 描述:包含程序所使用的命名空间
- //-----------------------------------------------------------------------------------------------
- using namespace std;
- using namespace cv;
- //-----------------------------------【main( )函数】--------------------------------------------
- // 描述:控制台应用程序的入口函数,我们的程序从这里开始
- //-----------------------------------------------------------------------------------------------
- int main( )
- {
- //载入原图
- Mat image = imread("1.jpg");
- //创建窗口
- namedWindow("【原图】膨胀操作");
- namedWindow("【效果图】膨胀操作");
- //显示原图
- imshow("【原图】膨胀操作", image);
- //获取自定义核
- Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
- Mat out;
- //进行膨胀操作
- dilate(image, out, element, Point(-1, -1),
iterations = 6,
borderType = BORDER_CONSTANT); //iterations=6,6是表示膨胀的次数,表示操作进行了6次膨胀 - //显示效果图
- imshow("【效果图】膨胀操作", out);
- waitKey(0);
- return 0;
- }
(二)腐蚀
- //-----------------------------------【头文件包含部分】---------------------------------------
- // 描述:包含程序所依赖的头文件
- //----------------------------------------------------------------------------------------------
- #include <opencv2/core/core.hpp>
- #include<opencv2/highgui/highgui.hpp>
- #include<opencv2/imgproc/imgproc.hpp>
- #include <iostream>
- //-----------------------------------【命名空间声明部分】---------------------------------------
- // 描述:包含程序所使用的命名空间
- //-----------------------------------------------------------------------------------------------
- using namespace std;
- using namespace cv;
- //-----------------------------------【main( )函数】--------------------------------------------
- // 描述:控制台应用程序的入口函数,我们的程序从这里开始
- //-----------------------------------------------------------------------------------------------
- int main( )
- {
- //载入原图
- Matimage = imread("1.jpg");
- //创建窗口
- namedWindow("【原图】腐蚀操作");
- namedWindow("【效果图】腐蚀操作");
- //显示原图
- imshow("【原图】腐蚀操作", image);
- //获取自定义核
- Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
- Mat out;
- //进行腐蚀操作
- erode(image, out, element, Point(-1, -1),
iterations = 6,
borderType = BORDER_CONSTANT); //此操作共进行了6次腐蚀 - //显示效果图
- imshow("【效果图】腐蚀操作", out);
- waitKey(0);
- return 0;
- }
腐蚀的效果图见于上图。
扫描二维码关注公众号,回复:
1836414 查看本文章