OpenCV图像处理形态学操作腐蚀Erode与膨胀Dilate

算法:


从图像处理角度看,二值图像的腐蚀和膨胀就是将一个小型二值图(结构元素,一般为3*3大小)在一个大的二值图上逐点移动并进行比较,根据比较的结果作出相应处理而已。

膨胀算法:用3X3的结构元素,扫描二值图像的每一个像素,用结构元素与其覆盖的二值图像做“与”运算,如果都为0,结构图像的该像素为0,否则为1.结果:使二值图像扩大一圈。


腐蚀算法:用3X3的结构元素,扫描二值图像的每一个像素,用结构元素与其覆盖的二值图像做“与”运算,如果都为1,结构图像的该像素为1,否则为0.结果:使二值图像减小一圈。


注意:

OpenCV里面的腐蚀膨胀都是针对 白色 目标区域的。

说,膨胀使图像 变大一圈, 那是指 图像中的 白色目标区域 扩大了一圈~~~大笑~~~腐蚀,亦然。

====================================

代码:

#include <stdio.h>
#include <cv.h>
#include <highgui.h>
#include <cvaux.h> //必须引此头文件
<p>&nbsp;</p><p>#pragma comment(lib, "cv.lib")
#pragma comment(lib, "cxcore.lib")
#pragma comment(lib, "highgui.lib")
</p>int main( int argc, char** argv )
{ 
 IplImage *img = cvLoadImage("rice.png",0);
 if(img == NULL)
 {
  printf("img load failed!\n");
  return 0;
 }
 IplImage *img_erode = cvCreateImage(cvGetSize(img), 8, 1);
 IplImage *img_dilate = cvCreateImage(cvGetSize(img), 8, 1);
 cvErode( img,img_erode, NULL,1); //腐蚀
 cvDilate( img,img_dilate, NULL,1); //膨胀
 cvNamedWindow("img_erode");
 cvNamedWindow("img_dilate");
 cvShowImage("img_erode",img_erode);
 cvShowImage("img_dilate",img_dilate);
 cvWaitKey(-1);

 cvReleaseImage(&img_dilate);
 cvReleaseImage(&img_erode);
 cvDestroyAllWindows();

 return 0;
}

转载于:https://my.oschina.net/u/1426828/blog/655468

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值