2016-12-06 5 views
0

私は画像処理の経験がほとんどありませんので、私の質問がやや明白な場合は私をよろしくお願いします。しかし、Googleとstackoverflowで検索した後、私はまだ私の仕事を完了する方法は考えていない。画像内のオブジェクトの値を変更するopencv C++

enter image description here

は、私が成長しているとマージグラブカット、平均シフト、キャニーエッジ検出、領域を探索したが、私はへの道を参照してくださいdidntは:私が何をしたいか は下のこの画像のように行列を変換しています私の問題を解決するためにそれらを実装します。私はその方法がどれほど速く働くか気になり、上記のすべてがかなり複雑で遅く見えていました。

PS。私の貧しい英語を申し訳ありませんが、私の母国語ではありません。

+0

おそらく、funciton'cv :: floodFill'を使用するのが良い方法です。あなたのすべての1を最初に "割り当てられていない"という意味の値に変換します。255のようなものです。その後、イメージのピクセルをループし、その値が "割り当てられていない"場合、flood fillを 'fill_value'で行います。 'cv :: floodFill'呼び出しごとに' fill_value'をインクリメントしてください。 – Rames

+0

Googleでは接続コンポーネントのラベル付けを行っています。また、cv :: connectedComponentsの使用方法に関する検索例 – Miki

答えて

1

それは「接続コンポーネント」のOpenCVの「connectedComponents」ための仕事だろう「ブロブ解析」、のように私には見えます - @Mikiのおかげ。基本的には、黒い背景(0秒)に接続された白いピクセル(1s)の塊を見つけて、識別された各塊のラベルを増やしています。

「ラベル付け」は、あなたのための別の検索語句です。

+1

シンプルブロブ検出器は、グレースケール画像でほぼ同じ強度(さらには形状、サイズ、その他の基準)を抽出するためのものです。だから、これは正しいツールではありません。これは接続されたコンポーネントのラベルであり、あなたはcv :: connectedComponentsを使うことができます – Miki

+1

@Miki修正のために多くの感謝。 –

+0

ありがとうMiki、それは動作します! 背景が黒(値= 0)である必要があること、またはconnectedComponentsが正しく機能しないことに注意することが重要です。 – Palooon

関連する問題