私はcvCannyとcvFindContoursを適用したので、均一な領域を見つけるために画像の輪郭を分離しようとしています。次に、キーを押すたびに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();
}
最初の繰り返しではすべての輪郭が描画され、2番目の描画ではALLを描画し、3番目の描画では2つ以外の描画を行います。
そして、私はcvFillConvexPoly機能を使用する場合には、画面のほとんどを埋める(私はこれを書いたように、私は凸多角形が私のために動作しません実現が、私はちょうど輪郭insideofを記入する必要があります)
ので、残りのすべての輪郭ではなく、forの各反復でちょうど1つの輪郭をどのように取ることができますか?
ありがとうございました。
ありがとう、それは、私はそのパラメータに気づいていなかった。今私はそれらを埋める必要がある、それのための任意の機能はありますか?そうでない場合、どうすればそれについて行くことができますか?多分流域は閉鎖されたもののために働くであろうが、時には開かれた等高線もある。 –
thicknessパラメータに負の値を使用します。それがうまくいかない場合は、これらのいずれかが役に立ちます:http://stackoverflow.com/questions/12929197/opencv-closing-a-shape-and-filling-it、http://stackoverflow.com/質問/ 1716274/fill-the-holes-in-opencv – maditya
もう一度おねがいします。 –