1

我被要求寫一個可以使用OpenCV檢測任何移動對象的代碼。它將用於戶外系統。但是,任何移動的物體?根據我的知識,它可以檢測人類,汽車,球等預先定義的對象。我不確定這個Any對象,因爲樹也移動到風中,對系統沒有用處,並且如果系統要檢測移動樹木的枝條,移動水波和無用的東西,這將是一個大問題。OpenCV:可以檢測移動物體?

因此,請讓我知道在opencv中是否有任何方法可以檢測到人類,汽車,貨車,動物等所有有用的移動物體,而不是無用的東西,如移動樹枝,移動水波等

有人告訴我:「模式識別」會幫助,但我沒有時間和它一起移動,我只有4個月,我不是一個數學的人。無論如何,如果這可以很容易地與視頻opencv一起使用,那麼我可以考慮它。

請幫忙。

+0

顯然這取決於你的*有用*的定義,不是?明天會有另一個人問道如何檢測有用的移動物體,如樹枝或水波,但沒有汽車或飛機。 – ziggystar

+0

@ziggystar:當然,我被卡住了。車輛,人類和動物只會有用。但爲了上帝的緣故,任何對象意味着我想我必須建立一個新的AI技術。 –

+0

@ziggystar:這是可能的! http://www.youtube.com/watch?v=UFIVCDDnrmM –

回答

3

研究背景/前景分割方法。它們用於通過使用統計方法估計背景來分割(檢測)移動對象。 OpenCV的版本2.4.5提供了許多不同的實現的背景扣除,即

  • BackgroundSubtractorMOG
  • BackgroundSubtractorMOG2
  • FGDStatModel
  • MOG_GPU
  • MOG2_GPU VIBE_GPU < - 下非自由的功能上市
  • GMG_GPU

有位於{opencv_folder} \樣品\ GPU A演示源代碼bgfg_segm.cpp。演示顯示使用情況並顯示分段類的輸出(在GPU上)。還有一個類似的CPU演示,只是尋找它。基於GPU的類提供實時性能。

該方法將輸出物體作爲輪廓或作爲蒙版。檢測後,您可以通過應用形態學操作(如擴張和侵蝕)來消除一些誤報和噪音。另外,您只能保持具有足夠大面積的輪廓(以便可以過濾小的葉片)。

+0

我需要實時表現! –

+0

哇..我會找到更多關於這..任何可用的鏈接請? –

+0

只需查看所提及的OpenCV類的文檔,並查看示例演示代碼。另外閱讀一些關於背景分割方法的論文。在OpenCV文檔中爲這些類引用了一些論文。 – Alexey

4

不,你不必重新發明輪子。網上有很多例子來檢測移動物體 你可以google about motion

的簡單的方法來實現此目的只是檢測回地面,具有前一幀的參考和中減去新的幀。減去的圖像將包含關於運動區域或任何在屏幕上發生變化的信息(框架)

關於檢測對象,可以根據運動糾正區域,並且可以指定運動的閾值並且可以通過二值化來抓取對象

+0

哇。我會發現更多關於這個問題 –