OPenCV的中cvErode和cvDilate腐蚀和膨胀函数
Erode腐蚀,Dilate膨胀,这两个形态学函数总是成对出现,前者可以消除较小独点如噪音,后者可以使不连通的图像合并成块。
void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 )
void cvDilate( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );
这两个函数的参数相同,是一对“相反”的函数(这里的相反并不是指后一个函数可以将前一个函数处理的图像恢复,而是一个缩小图像团块,一个放大图像的团块)
src
输入图像.
dst
输出图像.
element
用于膨胀的结构元素。若为 NULL, 则使用 3×3 长方形的结构元素
iterations
膨胀的次数
膨胀可以重复进行 (iterations) 次. 对彩色图像,每个彩色通道单独处理。
下面的程序将演示这两个函数,腐蚀和膨胀的过程
- <code class=“language-cpp”>#include “cv.h”
- #include “cxcore.h”
- #include “highgui.h”
- int main(int argc,char** argv)
- {
- if(argc<2)
- return 0;
- int a=1;
- int eIter=1,dIter=1,exitFlag=1;
- IplImage *image,*image1,*image2;
- image = cvLoadImage(argv[1]);
- image1 = cvCreateImage(cvSize(image->width,image->height),8,1);
- image2 = cvCreateImage(cvSize(image->width,image->height),8,1);
- cvCvtColor(image,image1,CV_RGB2GRAY);
- cvCvtColor(image,image2,CV_RGB2GRAY);
- cvNamedWindow(”image”,1);
- cvShowImage(”image”,image);
- cvNamedWindow(”Select”,1);
- cvCreateTrackbar(”eIterations”,“Select”,&eIter,20,0);
- cvCreateTrackbar(”dIterations”,“Select”,&dIter,20,0);
- cvNamedWindow(”Erode”,1);
- cvNamedWindow(”Dilate”,1);
- cvShowImage(”Erode”,image1);
- cvShowImage(”Dilate”,image2);
- cvWaitKey(0);
- while(1)
- {
- //腐蚀,消除细小物质
- cvErode(image1,image1,0,2);
- cvShowImage(”Erode”,image1);
- std::cout<<”Erode”<<std::endl;
- a=cvWaitKey(0);
- if((char) a == ‘q’)
- break;
- }
- cvCopy(image1,image2);
- a=1;
- while(1)
- {
- //腐蚀,填充物体内细小物质
- cvDilate(image2,image2,0,1);
- cvShowImage(”Dilate”,image2);
- std::cout<<”Dilate”<<std::endl;
- a=cvWaitKey(0);
- if((char) a == ‘q’)
- break;
- }
- return 0;
- }</code>
- #include "cv.h"
- #include "cxcore.h"
- #include "highgui.h"
- int main(int argc,char** argv)
- {
- if(argc<2)
- return 0;
- int a=1;
- int eIter=1,dIter=1,exitFlag=1;
- IplImage *image,*image1,*image2;
- image = cvLoadImage(argv[1]);
- image1 = cvCreateImage(cvSize(image->width,image->height),8,1);
- image2 = cvCreateImage(cvSize(image->width,image->height),8,1);
- cvCvtColor(image,image1,CV_RGB2GRAY);
- cvCvtColor(image,image2,CV_RGB2GRAY);
- cvNamedWindow("image",1);
- cvShowImage("image",image);
- cvNamedWindow("Select",1);
- cvCreateTrackbar("eIterations","Select",&eIter,20,0);
- cvCreateTrackbar("dIterations","Select",&dIter,20,0);
- cvNamedWindow("Erode",1);
- cvNamedWindow("Dilate",1);
- cvShowImage("Erode",image1);
- cvShowImage("Dilate",image2);
- cvWaitKey(0);
- while(1)
- {
- //腐蚀,消除细小物质
- cvErode(image1,image1,0,2);
- cvShowImage("Erode",image1);
- std::cout<<"Erode"<<std::endl;
- a=cvWaitKey(0);
- if((char) a == 'q')
- break;
- }
- cvCopy(image1,image2);
- a=1;
- while(1)
- {
- //腐蚀,填充物体内细小物质
- cvDilate(image2,image2,0,1);
- cvShowImage("Dilate",image2);
- std::cout<<"Dilate"<<std::endl;
- a=cvWaitKey(0);
- if((char) a == 'q')
- break;
- }
- return 0;
- }
这个程序可以选择迭代次数为1,然后不断循环(可以作为迭代次数),观察每次迭代后的效果。
效果:
下面是实验效果(原图是在车辆跟踪中用帧间差分法得到的二值化图像),可以发现通过先腐蚀Erode多次,后膨胀Dilate多次,图像的噪音消除,物体内细小物质也被填充。
第一幅图右边为原图,左边为腐蚀后消除了噪音点和干扰点的图。
第二幅图右边是和第一幅图一样的原图,但是左边的图像是对第一幅图像左边的图进行了膨胀操作,可以看到, 物体内细小物质被填充。
通过这样的多次迭代腐蚀再膨胀的过程,可以得到效果更好的检测图像,方便后续提取运动目标操作。
转载自:https://blog.csdn.net/futurewu/article/details/10047409
OPenCV的中cvErode和cvDilate腐蚀和膨胀函数相关推荐
- opencv python 图像形态学操作/图像腐蚀/图像膨胀/开运算/闭运算/顶帽/黑帽
Morphological Transformations 1图像腐蚀 腐蚀的基本思想:侵蚀前景物体的边界(总是试图保持前景为白色):内核在图像中滑动(如在2D卷积中).只有当内核下的所有像素都是1时 ...
- 基于python的opencv图像形态学处理(图像腐蚀与膨胀操作以及礼帽与黑帽)
腐蚀与膨胀 图像的腐蚀与膨胀互为逆向操作,通常用于处理二值图像(黑白图,以黑色为底面背景),因此需要先进行二值化处理,腐蚀和膨胀通俗的理解就是,在指定大小的卷积核内,如果该卷积核内全为黑色或全为白色, ...
- Opencv学习笔记(十二):图片腐蚀和膨胀操作
文章目录 腐蚀 代码 效果 膨胀 代码 效果 开运算/闭运算 代码 腐蚀 原理:是在原图的小区域内取局部最小值.因为是二值化图,只有 0 和 255,所以小区域内有一个是 0 该像素点就为 0: 作用 ...
- 图像二值形态学——腐蚀和膨胀的C语言实现
数学形态学是法国和德国科学家在研究岩石结构时建立的一门科学.形态学的用途主要是获取物体拓扑和结构信息,通过物体和结构元素相互作用的某些运算,得到物体更本质的形态.在图像处理中的应用主要是:利用形态学的 ...
- OpenCV-Python图像处理:腐蚀和膨胀原理及erode、dilate函数介绍
☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ░ 一.引言 关于图像的腐蚀和膨胀,网上介绍的资料非常多,老猿也看了很多,总体来说主要偏向于就 ...
- 腐蚀函数cvErode 和 膨胀函数cvDilate
Erode腐蚀, Dilate膨胀,这两个形态学函数总是成对出现,前者可以消除较小的点如噪音,后者可以使不连通的图像合并成块. void cvErode( const CvArr* src, ...
- opencv中的腐蚀与膨胀(转)
图像腐蚀和图像膨胀是图像中两种最基本形态学操作. void erode( const Mat& src, Mat& dst, const Mat& element,Point ...
- OpenCV(六)形态学操作1--基础:膨胀与腐蚀(回调函数)
目录 形态学通用API:morphologyEx 一.基础理论 1.邻接关系 (1)四邻接: (2)D邻接: (3) 八邻接: 2.连通性 (1)四连通: (2)八连通: (3)m连通: 3.形态学基 ...
- OpenCV 【十八】图像平滑处理/腐蚀与膨胀(Eroding and Dilating)/开闭运算,形态梯度,顶帽,黑帽运算
图像滤波总结(面试经验总结)https://blog.csdn.net/Darlingqiang/article/details/79507468 目录 part one 图像平滑处理 1原理 2代码 ...
最新文章
- Linux定时任务Crontab执行PHP脚本
- Zookeeper 安装
- Annotations
- c轴 t轴 l轴_从事数控工作的你知道3轴、3+2轴定位与5轴联动的区别吗?
- qt单步调试linux程序,用Qt 调用GDB调试 Arm程序 详细步骤----可单步执行每一行
- 边缘计算计算机科学与技术,边缘计算现状与展望-ComputerScience-WayneStateUniversity.PDF...
- Java并发编程之ReentrantLock重入锁
- phpstorm 如何设置函数的注释内容
- keystone nova v2 python
- C/C++常见标准头文件前格式探讨
- 滴滴否认上海团队解散;雄安超前布局 5G;小米拆分独立品牌 | 极客头条
- 创新工场 蔡学镛SINA微博中向我们提及的书籍、文章统计 (二)
- 体脂数C语言switch,你真胖么 体脂率是什么 体脂率的计算方法
- python对txt文件进行处理实战_python数据处理实战
- python中加注释_python中如何添加注释
- Windows10系统C盘文件实际大小占用空间和可用空间不一致(相差差8到20G)
- 不同系统mysql安装教程
- Android设置来电铃声和分享操作
- 商家门店会员管理,只要这五步,稳步提升销售额
- 华为linux系统能用Cad么,华为平板能装cad画图吗 华为平板可以用cad软件吗?
热门文章
- 函授计算机大专自我鉴定100字,函授大学毕业自我鉴定100字(精选5篇)
- 8.面向对象-----类和对象
- 【苹果cms10 Maccmsv10 站群深度定制版 开发日志】 新增日志模块
- 【树莓派】最常用的树莓派 Linux 命令及说明
- 【Java】冒泡排序
- 【Python】Python库之文本处理
- azure 使用_如何使用JavaScript在Azure上开始使用SignalR
- 安全威胁建模综述_如何使用威胁建模分析应用程序的安全性
- mac docker 共享_如何在Docker for Mac中加快共享文件访问
- python语言有什么作用_python“ with”语句的用途是什么?