在数字图像处理中,图像的形态学变换占有很重要的地位。基本的形态转换就是膨胀和腐蚀,它们能实现多种功能:例如消除噪声、分割出独立的图像元素以及在图像中连接相邻的元素。当然形态学也常备用于求出图像的梯度。
cvErode()
函数功能:对图像进行腐蚀
函数原型:void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );
函数说明:
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
const char *pstrSrcWindowsTitle = "原图";
const char *pstrDestWindowsTitle_1 = "对原图腐蚀之后";
const char *pstrDestWindowsTitle_2 = "对原图膨胀之后";
const char *pstrDestWindowsTitle_3 = "对腐蚀过的图片作膨胀";
int main(int argc, char *argv[]){
IplImage * src_image = cvLoadImage(argv[1]);//加载图片
cvNamedWindow(pstrDestWindowsTitle_1, CV_WINDOW_AUTOSIZE);//创建窗口用于显示
cvNamedWindow(pstrSrcWindowsTitle, CV_WINDOW_AUTOSIZE);
cvShowImage(pstrSrcWindowsTitle, src_image);//显示原图
//创建两个图片空间用于存放变换过的图片
IplImage * out_image = cvCreateImage(cvGetSize(src_image),
IPL_DEPTH_8U,
3);
IplImage * out_image_2 = cvCreateImage(cvGetSize(src_image),
IPL_DEPTH_8U,
3);
cvDilate(src_image, out_image, NULL, 2);//膨胀处理,并显示
cvShowImage(pstrDestWindowsTitle_2, out_image);
cvErode(src_image, out_image,NULL,2);//腐蚀处理,并显示
cvShowImage(pstrDestWindowsTitle_1, out_image);
cvDilate(out_image, out_image_2, NULL, 2);//对腐蚀过的图像再膨胀
cvShowImage(pstrDestWindowsTitle_3, out_image_2);
waitKey(0);
return 0;
}
原文地址:http://blog.csdn.net/embedclub_lyf/article/details/44305961