cvFindContours(IplImage *img, CvMemStorage *storage, CvSeq **firstContour, int headerSize = sizeof(CvContour), CvContourRetrievalMode mode = CV_RETR_LIST,CvChainApproxMethod method = CV_CHAIN_APPROX_SIMPLE)
参数img必须是二值图像。
cvFindContour(img, storage, &contour, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE)
contour保存着轮廓的信息。
contour保存第一个轮廓的信息,序列里面的每一个元素都是CvPoint类型的点 contour->total是元素个数。
contour->h_next是下一个轮廓
输出所有轮廓点的代码
for(; contour != NULL; contour = contour->h_next) {
CvRect rect = cvBoundingRect(contour, 0);
cvRectangle(src, cvPoint(rect.x, rect.y), cvPoint(rect.x + rect.width, rect.y + rect.height), CV_RGB(255, 0, 0), 1, 8, 0);
printf("The %dth contour\n------------------------\n",i++);
for(j = 0; j < contour->total; ++j) {
CvPoint *p = (CvPoint *)cvGetSeqElem(contour, j);
printf("x:%d\ty:%d\n",p->x, p->y);
}
}