2012-03-02 2 views
1

私はVS2010でcvblob.hでopencv 2.0を使用していました。黄色のブロブを検出するプログラムを作成しました。今私がしたいことは、それらが動くかどうかにかかわらず、それらの小塊に番号を付けることです。ラベルプロパティは数値には便利だが、試してみたところ、1つのBLOBを移動するとラベルが変わる。 「初期」のラベル番号はどのように保持できますか?cvblobでblobラベルを保持するにはどうすればよいですか?

+0

私はそれを解決しました。あなたが言ったように、ブロブの領域にシンプルな複数のオブジェクト追跡システムベースを実装しました。ブロブの領域は、2つの次元だけで移動し、領域は変わりません。 – Tapia

答えて

1

あなたがしたいものはブロブを追跡することです。ブロブを追跡するということは、ブロブをフレームごとに追跡することを意味します。この方法では、移動するオブジェクト(時間の経過とともにブロブ)を識別する番号が表示されます。

これを行うには、独自のトラッキングアルゴリズム(特定の問題に基づいて)をコーディングするか、cvBlobに付属するトラッキング機能を使用する必要があります。

cvBlobパッケージにコードサンプルがあります。特に:

http://cvblob.googlecode.com/svn/trunk/samples/red_object_tracking.cpp http://cvblob.googlecode.com/svn/trunk/test/test_tracking.cpp

0

ブロブを初期ラベルに固定したいと言うと、基本的にそれらを追跡しようとしています。これは、複数のオブジェクト追跡システムを実装するのに十分な量である。あなたが思うほどシンプルではないと私に信じてください。

フレーム間にある種の対応関係を確立する必要があります。

フレーム間でブロブがあまり変化しない場合は、1つのフレーム内の各ブロブの幾何学中心を見つけることができます。また、すばやいフレームでは、前のフレームで見つかった中心に最も近いブロブを見つけることができます。次に、新しいブロブに前のラベルを割り当てます。 そんなに...

+0

はい、私は自分の位置を知っている2つのブロブを追跡するコードを持っていますが、カメラ上の位置を入れ替えるとラベルが変わります。各ブロブのラベルを「保持」する方法はありますか? – Tapia

+0

ライブラリ機能によって行われたラベリングは、最初に検出されるBLOBに基づいています。ラベルが変更されないことを期待している場合は、ブロブ検出アルゴリズムがブロブを追跡することを期待していることを意味します。どちらが起こらないか – bubble

関連する問題