腐蚀和膨胀(erode and dilate)
腐蚀和膨胀
在这两个操作中都需要有一个滑动窗口一样的小块,这个小块在整副图像上面进行一个像素一个像素的滑动。
膨胀
膨胀操作:当前像素值等于该小块覆盖下的图像区域的最大像素值。
从而当背景色为白色,字体为黑色时,执行一次膨胀操作,黑色字体将变细。
相关的api使用:
Mat ele = getStructuringElement(MORPH_RECT,Size(3,3),Point(-1,-1));
dilate(src,dst,ele,Point(-1,-1));
MORPH_RECT:滑动块为矩形
MORPH_CROSS:滑动块为十字型
MORPH_ELLIPSE:滑动块为椭圆形
Point(-1,-1):使用默认的锚点
腐蚀
腐蚀操作:当前像素值等于该小块覆盖下的图像区域的最小像素值。
从而当背景色为白色,字体为黑色时,执行一次腐蚀操作,黑色字体将变粗。
相关api的使用:
Mat ele = getStructuringElement(MORPH_RECT,Size(3,3),Point(-1,-1));
erode(src,dst,ele);
附加
为了调试参数方便,使用createTrackbar()函数来将要变化的参数值变成可拖动的进度条,方便测试最合适的参数。
具体的应用:
#include <ros/ros.h>
#include "opencv2/opencv.hpp"using namespace std;
using namespace cv;int eroding_x = 1;
int eroding_y = 1;
int dilate_x = 1;
int dilate_y = 1;
Mat src;void Erod(int,void*);
void Dila(int,void*);int main(int argc, char *argv[])
{src = Mat::ones(Size(400,400),CV_32F);putText(src,"test",Point(100,100),3,2,Scalar(0,0,0),3);line(src,Point(10,10),Point(10,300),Scalar(0,0,0),3,8);line(src,Point(10,10),Point(300,10),Scalar(0,0,0),3,8);imshow("src",src);namedWindow("Dilate window",CV_WINDOW_AUTOSIZE);namedWindow("Eroding window",CV_WINDOW_AUTOSIZE);createTrackbar("dilate x size","Dilate window",&dilate_x,17,Dila);createTrackbar("dilate y size","Dilate window",&dilate_y,17,Dila);createTrackbar("eroding x size","Eroding window",&eroding_x,17,Erod);createTrackbar("eroding y size","Eroding window",&eroding_y,17,Erod);waitKey(0);return 0;
}void Dila(int,void*)
{if(dilate_x > 0 && dilate_y > 0){Mat ele = getStructuringElement(MORPH_CROSS,Size(dilate_x,dilate_y),Point(-1,-1));Mat temp;dilate(src,temp,ele,Point(-1,-1));imshow("dilate",temp);}else{cout << "the dilate_x and dilate_y don't equals 0" << endl;}
}void Erod(int,void*)
{if(eroding_x > 0 && eroding_y > 0){Mat ele = getStructuringElement(MORPH_RECT,Size(eroding_x,eroding_y),Point(-1,-1));Mat temp;erode(src,temp,ele);imshow("erode",temp);}else{cout << "the eroding_x and eroding_y don't equals 0" << endl;}
}
其中:
createTrackbar(拖动条的名字,所在弹出框的名字,&改变的变量,拖动条的最大值,回调的函数
);
腐蚀和膨胀(erode and dilate)相关推荐
- OpenCV-Python教程:形态学变换~腐蚀和膨胀(erode,dilate)
原文链接:http://www.juzicode.com/opencv-python-erode-dilate 返回Opencv-Python教程 形态学变换是基于图像形状的变换过程,通常用来处理二值 ...
- 详解图像形态学操作之图形的腐蚀和膨胀的概念和运算过程,并利用OpenCV的函数erode()和函数dilate()对图像进行腐蚀和膨胀操作
图像形态学中两种最基本的操作就是对图形的腐蚀和膨胀,可以说,形态学中的中高级操作都是建立在这两种操作之上.通过这两种基本的运算可以去除图像中的噪声,分割出独立的区域或者将两个区域连接在一起. 关于图像 ...
- OpenCV-Python图像处理:腐蚀和膨胀原理及erode、dilate函数介绍
☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ░ 一.引言 关于图像的腐蚀和膨胀,网上介绍的资料非常多,老猿也看了很多,总体来说主要偏向于就 ...
- OpenCV入门系列 —— cv::erode、cv::dilate 图像腐蚀和膨胀
OpenCV入门系列 -- cv::erode.cv::dilate 图像腐蚀和膨胀 前言 程序说明 输出结果 代码示例 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用 ...
- OpenCV学习笔记(七):形态学morpholgy(1):腐蚀/膨胀:enrode(),dilate()
OpenCV学习笔记(七):形态学(morpholgy):腐蚀/膨胀:enrode(),dilate() 数学形态学(Mathematical morphology) 是一门建立在格论和拓扑学基础之上 ...
- 《OpenCV3编程入门》学习笔记6 图像处理(三)形态学滤波(1):腐蚀与膨胀
第6章 图像处理 6.3 形态学滤波(1):腐蚀与膨胀 6.3.1 形态学概述 1.数学形态学(Mathematical morphology):建立在格论和拓扑学基础上的图像分析学科,是数学形态学图 ...
- OpenCV 【十八】图像平滑处理/腐蚀与膨胀(Eroding and Dilating)/开闭运算,形态梯度,顶帽,黑帽运算
图像滤波总结(面试经验总结)https://blog.csdn.net/Darlingqiang/article/details/79507468 目录 part one 图像平滑处理 1原理 2代码 ...
- 形态学滤波:腐蚀与膨胀(浅谈)
形态学滤波:腐蚀与膨胀(浅谈) 一 关于二值化.膨胀.腐蚀以及拟合椭圆中心的代码如下** 二 关于腐蚀和膨胀,在此做一些浅显的总结. 三 对于上述代码中所生成的图片,进行一些说明. 四 接下来谈谈自己 ...
- 图像形态学概要-腐蚀、膨胀、开运算、闭运算、形态学梯度(形态学边缘提取)、顶帽操作、黑帽操作
图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 图像形态学中两种最基本的操作就是对图形的腐蚀和膨 ...
最新文章
- php链表笔记:单链表反转
- sonar jacoco 覆盖率为0_Jacoco统计代码覆盖率
- Windows Server 2008常用优化设置
- python 提示错误AttributeError: type object 'str' has no attribute '_name_'
- 44行代码AC_卡片换位(DFS变形题 视频讲解 )
- 2021年高考成绩查询陕西文科,2021年陕西高考文科二本分数线预测
- 推荐一个非常好的行为验证码开源项目!
- python深入和扩展_加速方案 — Python扩展模块
- 【J2SE】java实现简单照片查看器
- go语言web编程,初学点滴记录1
- eclipse报错: Unhandled event loop exception No more handles
- 深入浅出 CAS,很多想进阿里的倒在了这个知识点
- VBS中Sub与Function的区别[资料]
- 德歌:阿里云RDS PG最佳实践
- Word 模板渲染引擎-Poi-tl
- PC版微信如何输入换行符
- java简单实现在线资源多线程下载,断点续存,限制最大正在下载数
- win10锁定计算机后黑屏,win10电脑突然黑屏无法唤醒怎么办?老司机告诉你解决方法...
- vue-cli热更新 失效
- 基于python的国内外研究现状_国内外研究现状评述
热门文章
- 专题:生物医疗大数据
- 作者:熊森林(1988-),男,中国科学院国家空间科学中心助理研究员
- 【操作系统】连续内存分配策略
- 【软件工程】抽象泄漏
- 【JVM】通过javap命令分析Java汇编指令
- contains()+replaceFirst()进行substring计数(洛谷P3741题题解,Java语言描述)
- 比特币的缺陷以及改进
- [转] Android系统如何实现UI的自适应
- 一个使用Logging Application Block的小问题[xgluxv]
- 直播PK短视频?直播+短视频才是王道