您的位置:首页 > 运维架构

《学习OpenCV》练习5-5

2014-02-15 20:01 344 查看
#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* add12 = cvCreateImage( cvGetSize(src1), IPL_DEPTH_8U, 3 );
IplImage* differ12 = cvCreateImage( cvGetSize(src1), IPL_DEPTH_8U, 3 );
IplImage* gray = cvCreateImage( cvGetSize(differ12), IPL_DEPTH_8U, 1 );
IplImage* thresh = cvCreateImage( cvGetSize(differ12), IPL_DEPTH_8U, 1 );
IplImage* open = cvCreateImage( cvGetSize(differ12), IPL_DEPTH_8U, 1 );

/*创建并命名窗口*/
cvNamedWindow( "add12", CV_WINDOW_NORMAL );
cvNamedWindow( "differ12", CV_WINDOW_NORMAL );
cvNamedWindow( "gray", CV_WINDOW_NORMAL );
cvNamedWindow( "thresh", CV_WINDOW_NORMAL );
cvNamedWindow( "open", CV_WINDOW_NORMAL );

/*图像处理*/
cvAdd( src1, src2, add12 );
cvAbsDiff( src1, src2, differ12 );											//differ12 = |src1 - src2|
cvCvtColor( differ12, gray, CV_RGB2GRAY );									//将differ12由RGB转换为单通道灰度图gray
cvThreshold( gray, thresh, 20.0, 255.0, CV_THRESH_TOZERO );					//超过阈值20.0的部分保持不变,低于阈值部分设置为0
cvErode( thresh, open );													//对thresh先进行腐蚀,再进行膨胀,即进行一次开运算
cvDilate( open, open );

/*显示图像*/
cvShowImage( "add12", add12 );
cvShowImage( "differ12", differ12 );
cvShowImage( "gray", gray );
cvShowImage( "thresh", thresh );
cvShowImage( "open", open );

/*释放内存与销毁窗口*/
cvWaitKey(0);
cvReleaseImage( &add12 );
cvReleaseImage( &differ12 );
cvReleaseImage( &gray );
cvReleaseImage( &thresh );
cvReleaseImage( &open );
cvDestroyAllWindows();

return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c opencv 图形 图像处理