我被要求编写一个可以使用OpenCV检测任何移动对象的代码。它将用于室外系统。但是,任何移动物体?根据我的知识,它可以检测预定义的物体,如人类,汽车,球等。我不确定这个任何物体,因为树也移动到风对系统没用,如果系统要检测移动树枝,移动水浪和无用的东西,这将是一个大问题。
所以,请告诉我在opencv中是否有任何方法我们可以检测到所有有用的移动物体,如人类,汽车,货车,动物等,而不是无用的东西,如移动树枝,移动水波等。
有些人告诉我“模式识别”会有所帮助,但我没有时间和它一起移动,我只有4个月而且我不是数学家。无论如何,如果这可以很容易地用于视频opencv,那么我可以考虑一下。
请帮忙。
答案 0 :(得分:4)
不,你不必重新发明轮子。网上有很多例子来检测移动物体 你可以google about motion。
实现此目的的简单方法是检测背景,具有前一帧的参考并减去新帧。减影图像将包含有关运动区域或屏幕(框架)上发生变化的任何信息
关于检测物体,你可以根据运动修正区域,你可以指定运动的阈值,可以通过二值化抓取物体
答案 1 :(得分:3)
查看背景/前景分割方法。它们用于通过使用统计方法来估计背景来分割(检测)移动物体。 OpenCV版本2.4.5为背景减法提供了许多不同的实现,即
{opencv_folder} \ samples \ gpu中有一个演示源代码bgfg_segm.cpp。该演示显示了分段类的使用和显示输出(在GPU上)。还有一个类似于CPU的演示,只是寻找它。基于GPU的类提供实时性能。
该方法将对象输出为轮廓或掩码。检测后,您可以通过应用形态学操作(如扩张和侵蚀)去除一些误报和噪音。此外,您只能保留面积足够大的轮廓(以便可以过滤掉小的叶子)。