IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 腐蚀与膨胀的基本操作 -> 正文阅读

[人工智能]腐蚀与膨胀的基本操作

通过腐蚀和膨胀可以对图像进行加工,腐蚀是指将图像中一些毛刺去除,使图像更柔和;膨胀是指将缺陷填满使图像更饱满。下面用一张二值图来举例说明。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWXVhbjYwNA==,size_20,color_FFFFFF,t_70,g_se,x_16

?

可以看到,这个图形边缘有大量细线,中间的白色粗线条也有一些黑色瑕疵。 下面我们进行腐蚀操作:

?

?watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWXVhbjYwNA==,size_20,color_FFFFFF,t_70,g_se,x_16

?可以看到细线消失了一部分。再看看膨胀:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWXVhbjYwNA==,size_20,color_FFFFFF,t_70,g_se,x_16?

?这回是粗实线中的小黑块被填充了。

看完了效果,我们再来看看代码,首先是腐蚀的代码:

#include<iostream>#include<opencv2/opencv.hpp>using namespace std;using namespace cv;int main(){Mat img = imread("F:\image\1.png");Mat dst;inRange (img, Scalar(0, 0, 30), Scalar(180, 221, 255), dst);    //获取一张图片,将它二值化    Mat dst1;Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));    //创建结构元素大小为3 * 3,这个大小可理解为计算机在做修改时的笔触,数值越大改动越剧烈        erode(dst, dst1, element);    //进行腐蚀    namedWindow("腐蚀", 0);imshow("腐蚀", dst1);    waitKey(0);    return 0;}

然后是膨胀的代码:

#include<iostream>#include<opencv2/opencv.hpp>using namespace std;using namespace cv;int main(){Mat img = imread("F:\image\1.png");Mat dst;inRange (img, Scalar(0, 0, 30), Scalar(180, 221, 255), dst);    //获取一张图片,将它二值化    Mat dst1;Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));    //创建结构元素大小为3 * 3,这个大小可理解为计算机在做修改时的笔触,数值越大改动越剧烈        dilate(dst, dst1, element);    //进行膨胀    namedWindow("膨胀", 0);imshow("膨胀", dst1);    waitKey(0);    return 0;}

有了腐蚀和膨胀的经验,我们自然会想到再做一次类似的操作,例如腐蚀两次或先腐蚀再膨胀等,若要腐蚀两次,我们只需修改erode的参数为:

 erode(dst, dst1, element,Point(-1,-1), 2);

而此时输出的图像为

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWXVhbjYwNA==,size_20,color_FFFFFF,t_70,g_se,x_16

可以看到更多的毛刺被清除。

膨胀两次同理。

至于另外的操作方式,我们来看看这张图:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWXVhbjYwNA==,size_20,color_FFFFFF,t_70,g_se,x_16

?这么多的操作,是不是意味着我们要记住很多代码呢?不用担心,前人已经帮助我们把这些的原理隐去,再使用时只需要输入各个操作的代号即可(下图给出了各个代号)。比如我们用这种方法进行梯度计算:

#include<iostream>#include<opencv2/opencv.hpp>using namespace std;using namespace cv;int main(){Mat img = imread("F:\image\1.png");Mat dst;inRange (img, Scalar(0, 0, 30), Scalar(180, 221, 255), dst);Mat dst1;Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));//创建结构元素大小为3 * 3morphologyEx(dst, dst1, 4, element);/*MORPH_ERODE = 0. 腐蚀MORPH_DILATE = 1. 膨胀MORPH_OPEN = 2. 开操作MORPH_CLOSE = 3. 闭操作MORPH_GRADIENT = 4. 梯度操作MORPH_TOPHAT = 5. 高帽操作MORPH_BLACKHAT = 6. 黑箱操作*/namedWindow("结果", 0);imshow("结果", dst1);waitKey(0);return 0;}

结果为:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWXVhbjYwNA==,size_20,color_FFFFFF,t_70,g_se,x_16

?新人写东西不易,麻烦点个赞吧!

?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-01-25 10:35:14  更:2022-01-25 10:37:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 21:23:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码