我试图分离图像的轮廓(为了找到统一的区域),所以我应用了 cvCanny,然后应用了 cvFindContours,然后我使用以下代码在每次按下一个键时绘制 1 个轮廓:
for( ; contours2 != 0; contours2 = contours2->h_next ){
cvSet(img6, cvScalar(0,0,0));
CvScalar color = CV_RGB( rand()&255, rand()&255, rand()&255 );
cvDrawContours(img6, contours2, color, cvScalarAll(255), 100);
//cvFillConvexPoly(img6,(CvPoint *)contours2,sizeof (contours2),color);
area=cvContourArea(contours2);
cvShowImage("3",img6);
printf(" %d", area);
cvWaitKey();
}
但是在第一次迭代中,它绘制了所有轮廓,第二次绘制了除了一个之外的所有轮廓,第三次绘制了除了两个之外的所有轮廓,依此类推。
如果我使用 cvFillConvexPoly 函数,它会填充大部分屏幕(尽管在我写这篇文章时我意识到凸多边形对我不起作用,我只需要填充轮廓的内部)
那么,如何在 for 的每次迭代中只取 1 个轮廓,而不是所有剩余的轮廓?
谢谢。