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

哇。我会发现更多关于这个问题 –