您的位置:首页 > 运维架构

Opencv-图像形态学处理比较(膨胀、腐蚀、开闭)

2014-03-29 14:44 691 查看
        形态学可以用来解决抑制图像噪声、特征提取、边缘检测、图像分割、形状识别、纹理分析、图像恢复与重建、图像压缩等图像预处理问题。基本运算主要有四个:膨胀、腐蚀、开启、闭合;通过这些基本运算还可以推导和组合各种数学形态学使用的算法;下面针对四种运算对图像进行了简单的处理,处理效果如图结果所示:

   #include "stdafx.h"

#include <opencv2/opencv.hpp>

#include "stdio.h"

#define SCALE  0.35

int _tmain(int argc, _TCHAR* argv[])

{
IplImage *src = cvLoadImage("test0.jpg",0);//强制转化为灰度图像
IplImage *dst = NULL;
dst = cvCreateImage(cvSize(cvRound(src->width*SCALE),cvRound(src->height*SCALE)),src->depth,src->nChannels);
cvResize(src,dst,CV_INTER_LINEAR);    //进行放缩
cvShowImage("testpic",dst);

IplImage *pImgErode = cvCreateImage(cvGetSize(dst),8,1);
IplImage *pImgDilate = cvCreateImage(cvGetSize(dst),8,1);
IplImage *pImgOpen = cvCreateImage(cvGetSize(dst),8,1);
IplImage *pImgClose = cvCreateImage(cvGetSize(dst),8,1);

pImgErode = cvCloneImage(dst);
pImgDilate = cvCloneImage(dst);
pImgOpen = cvCloneImage(dst);
pImgClose = cvCloneImage(dst);
IplConvKernel *pKernel =cvCreateStructuringElementEx(15,15,8,8,CV_SHAPE_ELLIPSE,NULL);//创建结构元素

cvErode(pImgErode,pImgErode,0,2);//3X3长方形结构元素腐蚀
cvDilate(pImgDilate,pImgDilate,0,2);//3X3长方形结构元素膨胀
cvShowImage("Erosion",pImgErode);
cvShowImage("Dilateion",pImgDilate);
cvWaitKey(0);

        cvErode(pImgOpen,pImgOpen,pKernel,1);//开运算

       cvDilate(pImgClose,pImgClose,pKernel,1);//闭运算
cvShowImage("Open",pImgOpen);
cvShowImage("Close",pImgClose);
cvWaitKey(0);

        cvReleaseImage(&src);
cvReleaseImage(&dst);
cvReleaseImage(&pImgErode);
cvReleaseImage(&pImgDilate);
cvReleaseImage(&pImgOpen);
cvReleaseImage(&pImgClose);
cvDestroyAllWindows();
return 0;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐