2

輪郭から小さな線分を削除する方法はありますか?

たとえば、このイメージでは、最大の等高線は緑色で指定され、その近似は青色で指定されています。

ここに画像の説明を入力

輪郭はポイントのセットであるため、赤い円で囲まれた輪郭のセグメントを削除するために何かできると思います。たとえば、細い線や小さなサブ輪郭を検出して削除するなどの方法があります。しかし、どうすればできるのかわかりません。

その前ではなく、輪郭を見つけた後にそれらを削除したいことを覚えておいてください。それらを削除する方法を知っていますか?または任意のアイデア?

4

1 に答える 1

1

私は、contourArea が小さな孤立した輪郭を削除するのに適していることを発見しました。このスニペットは、次の手順を実行する方法を示しています。

findContours(edges, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);

...

// Prune contours
vector<vector<Point> > prunedContours;
for (size_t i = 0; i< contours.size(); i++)
     {
         if (contourArea(contours[i]) > minArea)
         {
           prunedContours.push_back(contours[i]);
         }
     }

「ループ」または余分な輪郭領域が関心のあるより大きな輪郭の一部である場合は、approxPolyDPを見てください。元の輪郭を大まかに近似すると、余分な特徴が省略される可能性があります。

于 2014-10-10T14:38:25.977 に答える