将两幅图像相减后得到的图像分别做先腐蚀后膨胀与先膨胀后腐蚀的处理,代码如下:
#include "cv.h"
#include "highgui.h"
#include "cxcore.h"
int main(int argc,char** argv)
{cvNamedWindow("a",0);
IplImage* img=cvLoadImage("11.jpg");
cvShowImage("a",img);
cvNamedWindow("b",0);
IplImage* img1=cvLoadImage("12.jpg");
cvShowImage("b",img1);
IplImage* diff=cvCreateImage(cvGetSize(img),img->depth,img->nChannels);
cvAbsDiff(img,img1,diff);
cvNamedWindow("r",0);
cvShowImage("r",diff);
IplImage* cleandiff1=cvCreateImage(cvGetSize(img),img->depth,img->nChannels);
IplImage* cleandiff2=cvCreateImage(cvGetSize(img),img->depth,img->nChannels);
cvDilate(diff,cleandiff2,0,1);
cvErode(cleandiff2,cleandiff1,0,1);
cvNamedWindow("d",0);
cvShowImage("d",cleandiff1);
while (1)
{if (cvWaitKey(100)==27) break;
}
cvDestroyWindow("a");
cvDestroyWindow("b");
cvDestroyWindow("r");
cvDestroyWindow("d");
cvReleaseImage(&img);
cvReleaseImage(&img1);
cvReleaseImage(&diff);
cvReleaseImage(&cleandiff2);
return 0;
}
上面的代码是先做膨胀再做腐蚀操作,对于先腐蚀后膨胀将其中执行的代码顺序调换一下即可