学习opencv(5)——膨胀和腐蚀 cvErode()和cvDilate()

void cvErode(IplImage* src, IplImage* dst, IplConvKernel* B=NULL, int iterations = 1)

腐蚀函数通常用来消除图像中的“斑点”噪声。将小的元素腐蚀掉,将大的元素放大(个人理解)。

膨胀函数通常用来找到连通分支。

(实验的效果是腐蚀让图像更暗,原本有差异的地方更明显;膨胀让图片亮度更高,图片连接更紧)

B——和,默认为3*3,参考点在中心。


可自定义核。

自定义函数为IplImage* cvCreateStructuringElementEx(int cols, int rows, int anchor_x, int anchor_y, int shape, int values = NULL);

cols——列数, rows——行数, anchor_x——参考点的横坐标, anchor_y——参考点的列坐标,shape——形状。

形状的取值:CV_SHAPE_RECT矩形, CV_SHAPE_CROSS十字交叉形状, CV_SHAPE_ELLIPSE椭圆, CV_SHAPE_CUSTOM用户自定义。


code:

int main()
{
IplImage *image = cvLoadImage("....jpg");



CvMat *imageR = cvCreateMat(512,512,CV_8UC3);
cvResize(image, imageR);
namedWindow("原图");
cvShowImage("原图",imageR);
// CvSize size = cvSize(512,512);
CvMat *imageD1 = cvCreateMat(512,512,CV_8UC3);
CvMat *imageD2 = cvCreateMat(512,512,CV_8UC3);
// IplImage *m = cvCreateImage(size, IPL_DEPTH_8U, 3);
IplConvKernel* kernel = cvCreateStructuringElementEx(5, 3, 2,1, CV_SHAPE_ELLIPSE);
cvErode(imageR,imageD1, kernel);
cvDilate(imageR,imageD2, kernel);
namedWindow("效果图1");
cvShowImage("效果图1", imageD1);
namedWindow("效果图2");
cvShowImage("效果图2", imageD2);


cvWaitKey(0);


cvDestroyAllWindows();
cvReleaseMat(&imageD1);
    cvReleaseMat(&imageD2);
cvReleaseMat(&imageR);
cvReleaseImage(&image);






return 0;
}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值