1

camshiftdemo.cOpenCV2.3.1にバンドルされているプログラムを使用しています。

https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/c/camshiftdemo.c?rev=1429

このプログラムを使用して、選択したオブジェクトを追跡するようにロボットに指示するにはどうすればよいでしょうか。私はそれが機能するかどうかを確認するために実験を実行しようとしていますが、明らかにそれを少し調整する必要があります。

camshiftdemoが機能する方法は、選択したオブジェクトの周囲に赤い楕円を描画することです(マウスでクリックすることにより)。オブジェクトが移動すると、赤い楕円も移動します。オブジェクトがさらに遠くに移動すると、楕円のサイズが小さくなり、カメラに近づくと楕円が大きくなります。

ロボットに指示するために、赤い日食のサイズが小さくなると前方に移動し、サイズが大きくなると後方に移動するように指示することを考えていました。日食が左に移動するとロボットは左に移動し、日食が右に移動するとロボットは右に移動します。

簡単そうに聞こえますが、このコードのどこに日食が描かれていますか?そして、オブジェクトが10秒で前後に移動した場合はどうなりますか?これは、ロボットが同じ場所にとどまるという意味ですか(つまり、ロボットの動きに遅延を導入する必要がありますか?)?

私の目標はcamshiftdemo.c、ロボットに{前進、後退、左折、右折}するように指示するコードを取得することです。

では、日食のサイズを使用するなどして、ロボットにオブジェクトを追跡させるにはどうすればよいですか?

4

1 に答える 1

1

オブジェクトの検出をCamShiftトラッカーにシードする方法を求めているようです。

ロボットの処理能力の量によっては、より単純なアプローチを検討することをお勧めします。探しているターゲットを選べるなら、テニスボールのようなとても明るくユニークな色なので、私はテニスボールのようなものを選びます。これで、オブジェクトに既知の色の署名が付けられ、輪郭処理を使用してかなり簡単に追跡できます。また、カラートラッキングを使用する場合は、HSVやYCbCrなどの色空間に切り替えることを検討してください。これにより、色検出の強度変化に対する感度が低くなります。これは、OpenCVでの色の分離に関する私の古い投稿の1つです

実行する主な手順は次のとおりです。

  1. inRange(色のしきい値を使用してオブジェクトを分離します)
  2. findContours(これを使用してオブジェクトblobを検索します。おそらく最大のものが必要ですが、円形の場合は円形でフィルタリングすることもできます)
  3. モーメント(検出されたオブジェクトの重心を見つけるため)

オプションで、オブジェクトの重心をCamShiftトラッカーにフィードし、上記の手順を取得モードとして使用できます。

お役に立てば幸いです...

于 2012-10-24T00:17:57.670 に答える