#include "cv.h"
#include "highgui.h"
#include "stdio.h"
//*****************************************************
//主函数
//*****************************************************
int main()
{
/*载入源图像*/
IplImage* src1 = cvLoadImage( "homework_1.jpg" );
IplImage* src2 = cvLoadImage( "homework_2.jpg" );
/*判断是否出错*/
if (!src1 || !src2)
{
if (!src1)
printf( "failed to load %d.\n", "homework_1.jpg" );
if (!src2)
printf( "failed to load %d.\n", "homework_2.jpg" );
return -1;
}
/*创建图像空间*/
IplImage* differ12 = cvCreateImage( cvGetSize(src1), IPL_DEPTH_8U, 3 );
IplImage* cleandiff = cvCreateImage( cvGetSize(src1), IPL_DEPTH_8U, 3 );
IplImage* dirtydiff = cvCreateImage( cvGetSize(src1), IPL_DEPTH_8U, 3 );
/*创建并命名窗口*/
cvNamedWindow( "differ12", CV_WINDOW_NORMAL );
cvNamedWindow( "cleandiff", CV_WINDOW_NORMAL );
cvNamedWindow( "dirtydiff", CV_WINDOW_NORMAL );
/*图像处理*/
cvAbsDiff( src1, src2, differ12 ); //differ12 = |src1 - src2|
cvErode( differ12, cleandiff );
cvDilate( cleandiff, cleandiff ); //对differ12先进行腐蚀,然后进行膨胀操作(开运算),赋给cleandiff
cvDilate( differ12, dirtydiff );
cvErode( dirtydiff, dirtydiff ); //对differ12先进行膨胀,然后进行腐蚀操作(闭运算),赋给dirtydiff
/*显示图像*/
cvShowImage( "differ12", differ12 );
cvShowImage( "cleandiff", cleandiff );
cvShowImage( "dirtydiff", dirtydiff );
/*释放内存与销毁窗口*/
cvWaitKey(0);
cvReleaseImage( &differ12 );
cvReleaseImage( &cleandiff );
cvReleaseImage( &dirtydiff );
cvDestroyAllWindows();
return 0;
}