Opencv对象跟踪和计数在视频帧中通过ROI的对象



我正在制作Opencv应用程序,需要计算相机可以检测到的任何运动对象。相机是静止的,我做了对象跟踪与opencv和cvblob参考了许多教程。

我发现一些类似的问题:对象计数

我发现这是相似的http://labs.globant.com/uncategorized/peopletracker-people-and-object-tracking/

我是OpenCV的新手,我已经通过了OpenCV文档,但我找不到任何与视频中移动对象计数相关的内容。

谁能告诉我怎么做,特别是计数部分。正如我在上面的文章中读到的,他们统计了那些越过虚拟界限的人。是否有特殊的算法来检测过线的物体?

你的问题可能是广泛的,当你问关于在视频序列中计算移动对象的一般技术。我给你一些提示,也许能帮到你:

  • 通常在计算机视觉中,没有一种特定的方法可以解决你的问题。尝试做一些关于人物检测,背景提取运动检测的研究,以获得更广泛的视角
  • 更清楚地说明您的系统的用户需求,即图像框架中可以出现多少人?当您想要跟踪多个人时,事情就变得复杂了。此外,其他移动的物体能否出现在图像上(例如动物)?如果没有并且只有一个人应该被跟踪,那么你的问题的答案很简单,请参阅下面的解释。如果是,你需要做更多的研究。
  • 通常你无法在OpenCV API中找到直接解决计算机视觉问题的方法,即没有这样的方法直接解决人的计数问题。但肯定有一些论文,参考(通常是一些科学的东西)可以用来解决你的问题。所以没有办法"计算跨越竖线的人数"。你必须解决合并算法的问题。

在你提供的链接中,可以看到他们使用一些算法来提取背景,确定什么是不移动的背景和移动的前景(在我们的例子中,一个行走的人)。我们不确定他们是否使用了更复杂的东西,但是关于背景提取的信息足以让我们开始解决问题。

这是我对解决方案的贡献。假设只有一个人在稳定放置的摄像机前行走,并且看不到其他物体的运动,则按照以下步骤进行操作:

  1. 在镜头前没有人移动时保存帧,稍后将作为背景
  2. 的参考。
  3. 在一个循环中,应用一些背景检测器来提取图像中代表运动的部分(MOG甚至你可以只是计算背景和当前帧之间的差异,然后是二进制阈值和blob计数,见我的答案在这里)
  4. 根据假设,只应该检测到一个blob(如果没有,使用一些指标选择"最好的一个")。例如,选择面积最大的那个)。那个斑点就是我们要追踪的人。知道它在图像上的位置,比较"垂直线"的位置。从左向右移动的对象表示退出,从右向左移动的对象表示进入。

请记住,这个解决方案只适用于我们所述的假设。

最新更新