我想要分離的圖像的輪廓(以找到均勻區域),所以我施加cvCanny然後cvFindContours,然後我使用下面的代碼到每個I按下一個鍵時繪製1個輪廓:如何在OpenCV中獲得單獨的輪廓(並填充它們)?
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功能(儘管我寫這個,我意識到一個凸多邊形不會爲我工作,我需要填寫剛剛insideof輪廓)
所以,我如何才能在for的每次迭代中取得1個輪廓,而不是所有剩餘的輪廓?
謝謝。
非常感謝,就是這樣,我沒有注意到這個參數。現在我只需要填充它們,是否有任何功能?如果不是,我怎麼去解決它?也許分水嶺可以用於封閉的邊界,但有時候也有開放的輪廓。 –
對厚度參數使用負值。如果這不適合你,也許這些將有助於:http://stackoverflow.com/questions/12929197/opencv-closing-a-shape-and-filling-it,http://stackoverflow.com/問題/ 1716274/fill-the-holes-in-opencv – maditya
再次感謝,使用負厚度完美地實現了這個技巧。 –