1

OpenCV を使用して任意の移動オブジェクトを検出できるコードを作成するよう求められました。アウトドア系での使用になります。しかし、動く物体はありますか?私の知る限りでは、人間、車、ボールなどの事前定義されたオブジェクトを検出できます。このオブジェクトについてはわかりません。木も風に乗って移動するため、システムには使用されず、システムが検出するかどうか木の枝を動かしたり、水の波を動かしたり、そのような役に立たないものは大きな問題になるでしょう.

人間、車、バン、動物などのすべての有用な移動オブジェクトを検出し、木の枝の移動、水の波の移動などの役に立たないものを検出できるOpenCVの方法はありますか.

「パターン認識」が役立つと言う人もいますが、私はそれで動く時間がありません.4か月しかなく、私は数学の人ではありません. とにかく、これがビデオの OpenCV で簡単に使用できるなら、それについて考えることができます。

4

2 に答える 2

4

いいえ、一からやり直す必要はありません。モーションについてググることができる移動オブジェクトを検出するためのネット上の例はたくさんあります。

これを達成するための簡単な方法は、背景を検出し、前のフレームの参照を取得して新しいフレームを差し引くことです。減算された画像には、動きの領域または画面(フレーム)で変更されたものに関する情報が含まれます

物体の検出について、動きに応じて領域を修正したり、動きの閾値を指定したり、2値化して物体を捉えたりすることができます

于 2013-06-01T18:57:38.960 に答える
3

バックグラウンド/フォアグラウンドのセグメンテーション方法を調べます。これらは、統計的手法を使用して背景を推定することにより、移動オブジェクトをセグメント化 (検出) するために使用されます。OpenCV バージョン 2.4.5 では、バックグラウンド減算のさまざまな実装が提供されています。

  • BackgroundSubtractorMOG
  • BackgroundSubtractorMOG2
  • FGDStatModel
  • MOG_GPU
  • MOG2_GPU VIBE_GPU <-非フリー機能の下にリストされています
  • GMG_GPU

{opencv_folder}\samples\gpu にデモ ソース コード bgfg_segm.cpp があります。デモでは、セグメンテーション クラス (GPU 上) の使用法と出力が表示されます。CPU 用の同様のデモもあります。探してみてください。GPU ベースのクラスは、リアルタイム パフォーマンスを提供します。

このアプローチは、オブジェクトを輪郭またはマスクとして出力します。検出後、膨張や浸食などのモルフォロジー操作を適用することで、いくつかの誤検知とノイズを除去できます。さらに、十分な大きさの領域を持つ輪郭のみを保持できます (小さな葉が除外される可能性があります)。

于 2013-06-01T19:03:37.413 に答える