0

OpenCV を使用して背景 (緑色のフィールドと薄緑色のタオル) をオブジェクトから分離しようとしているので、次の画像を手動でセグメント化しました。 ここに画像の説明を入力

画像の右下にあるように、オブジェクトを赤で縁取り、考慮すべきではない接続されたコンポーネントを青で色付けすることにより、次のようになります。 ここに画像の説明を入力

254 のチャネル R と B でしきい値を設定した後、次の結果が得られました。

  1. チャンネルレッド

チャンネルレッド

  1. チャンネルブルー チャンネルブルー

を使用して赤チャネルのすべての輪郭を満たす場合

findContours( bordersRed, contoursRedChannel, hierarchyRedChannel, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, cv::Point(0, 0) );
for (int index = 0; index < contoursRedChannel.size(); index ++)
    {
        drawContours( bordersRed, contoursRedChannel, index, colorForMask, CV_FILLED, 8, hierarchyRedChannel, 0, cv::Point() );
    }

右下隅は次のようになります。

ここに画像の説明を入力

しかし、次のようなものにするために、青い点のみを含む輪郭を無視する必要があります。

ここに画像の説明を入力

そのため、赤と青のチャンネルを組み合わせて取得する必要がありますが、まだ方法がわかりません。アドバイスをいただければ幸いです。

ありがとう。

4

1 に答える 1