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;
}
#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;
}
相关文章推荐
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
- OpenCV1.0图像处理形态学操作腐蚀Erode与膨胀Dilate
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
- OpenCV图像处理形态学操作腐蚀Erode与膨胀Dilate
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
- opencv 图像处理 形态学操作 腐蚀 膨胀 开闭运算 阈值二值化 图像卷积 图像金字塔 Sobel算子 Laplacian 算子 candy边缘检测 霍夫变换 直方图
- 【OpenCV3图像处理】形态学 --- 膨胀、腐蚀、开运算 闭运算、形态学梯度、顶帽运算、黑帽运算
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
- opencv图像处理——形态学腐蚀膨胀练习示例代码
- OpenCV&图像处理_3:以腐蚀[eroding]和膨胀[dilating]为基础的形态学操作和图像金字塔[image pyramids]
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
- 学习【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀----思维导图笔记
- [转]【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
- Opencv--形态学图像处理--膨胀与腐蚀,开操作与闭操作
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀