《学习OpenCV》练习5-4

来源:互联网 发布:生产工艺流程图软件 编辑:程序博客网 时间:2024/05/21 10:16
#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先进行腐蚀,然后进行膨胀操作(开运算),赋给cleandiffcvDilate( 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;}

0 0