cvcontours上的所有点集合

int main(int argc, char* argv[]) { IplImage *src=cvLoadImage("d:/1.bmp",0); IplImage *dst=cvCreateImage(cvSize(src->width,src->height),8,3); CvMemStorage *stor=cvCreateMemStorage(0); CvSeq *cont=NULL; int i=0; for (i=0;cont;cont=cont->h_next) { length[i++]=cont->total; //记录每个轮廓上的元素个数 CvPoint *point =new CvPoint[cont->total]; CvSeqReader reader; CvPoint pt=cvPoint(0,0); cvStartReadSeq(cont,&reader); for (int j=0;j<cont->total;j++) { CV_READ_SEQ_ELEM(pt,reader); point[j]=pt; cout<<pt.x<<" "<<pt.y<<endl; } for (j=0;j<cont->total;j++) { int k=(j+1)%cont->total; cvLine(dst,point[j],point[k],cvScalar(0,0,255),1,4,0); } delete point; } cvNamedWindow("dst",1); cvShowImage("dst",dst); cvWaitKey(0); cvReleaseMemStorage(&stor); cvDestroyWindow("dst"); cvReleaseImage(&dst); return 0; }

 

         CV_READ_SEQ_ELEM(pt,reader);
         point[j]=pt;

 

获取了轮廓上的所有点

 

 

注意:总的轮廓数 和轮廓上的点数 搞错了。前者是由cvFindcontours()得到,后者是cont->total得到的

你可能感兴趣的:(null,delete,DST)