#ifdef _CH_
#pragma package <opencv>
#endif
#pragma comment(lib,"cv.lib")
#pragma comment(lib,"cvcam.lib")
#pragma comment(lib,"cxcore.lib")
#pragma comment(lib,"highgui.lib")
#include <cv.h>
#include <cvcam.h>
#include <cxcore.h>
#include <highgui.h>
void main()
{
IplImage *pImg=NULL;
IplImage *pContourImg=NULL;
CvMemStorage *storage=cvCreateMemStorage(0);
CvSeq *contour=NULL;
int mode=CV_RETR_CCOMP;
//载入图像,强制转化为灰度
pImg=cvLoadImage("1.jpg",CV_LOAD_IMAGE_GRAYSCALE);
assert(pImg!=NULL);
cvNamedWindow("Show_Src",CV_WINDOW_AUTOSIZE);
cvShowImage("Show_Src",pImg);
//cvWaitKey();
pContourImg=cvCreateImage(
cvGetSize(pImg),
IPL_DEPTH_8U,
3);
//复制pImg,并把它转还为灰度图
cvCvtColor(pImg,pContourImg,CV_GRAY2BGR);
//执行查找边缘操作
cvFindContours(
pImg,
storage,
&contour,
sizeof(CvContour),
mode,
CV_CHAIN_APPROX_SIMPLE,
cvPoint(2,2));
//在pContourImg上画出边界
cvDrawContours(pContourImg,
contour,
CV_RGB(0,0,255),
CV_RGB(255,0,0),
2,
2,
8
);
//显示查找结果
cvNamedWindow("Show_Dst",CV_WINDOW_AUTOSIZE);
cvShowImage("Show_Dst",pContourImg);
cvWaitKey();
//释放资源
cvReleaseImage(&pImg);
cvReleaseImage(&pContourImg);
cvDestroyWindow("Show_Src");
cvDestroyWindow("Show_Dst");
}