#include <cv.h>
#include <highgui.h>
#include <stdio.h>
int main( int argc, char** argv )
{
cvNamedWindow("a", 1);
IplImage* img_8uc1 = cvLoadImage("ScannedImage.bmp", CV_LOAD_IMAGE_GRAYSCALE );
IplImage* img_edge = cvCreateImage( cvGetSize(img_8uc1), 8, 1 );
IplImage* img_8uc3 = cvCreateImage( cvGetSize(img_8uc1), 8, 3 );
cvThreshold( img_8uc1, img_edge, 128, 255, CV_THRESH_BINARY );
CvMemStorage* storage = cvCreateMemStorage();//采用默认大小,即:0.
CvSeq* first_contour = NULL;
int Nc = cvFindContours(img_edge,storage,&first_contour,sizeof(CvContour),
CV_RETR_LIST,
CV_CHAIN_CODE,///*这个是关键参数*/
cvPoint(0, 0)
);
CvChain* chain = 0;
for( CvSeq* c = first_contour; c != NULL; c=c->h_next )
{
CvSeqReader reader;
int i, total = c->total;
cvStartReadSeq( (CvSeq*)c, &reader, 0 );
for( i = 0; i < total; i++ )
{
char code;
CV_READ_SEQ_ELEM( code, reader ); printf(" %d: \n",code); //得到轮廓的Freeman链码序列
CvPoint point;
point=cvReadChainPoint(reader);
printf(" x=%d ;y=%d: \n",point.x,point.y);//得到链码坐标点。
}
程序出错了,不知道该怎么解决,请各位高手帮忙,谢谢啊!!
}
printf("Finished all contours.\n");
cvCvtColor(img_8uc1, img_8uc3, CV_GRAY2BGR);
cvShowImage("a", img_8uc3 );
cvWaitKey(0);
cvDestroyWindow("a");
cvReleaseImage(&img_8uc1);
cvReleaseImage(&img_edge);
cvReleaseImage(&img_8uc3);
return 0;
}