【问题标题】:Motion tracking using Emgu CV (or OpenCV)使用 Emgu CV(或 OpenCV)进行运动跟踪
【发布时间】:2011-06-13 07:38:03
【问题描述】:

如何使用 Emgu CV 或 OpenCV 进行运动跟踪? 有哪些不同的做法?

我想在固定背景下跟踪对象。

最好的问候

【问题讨论】:

  • 你要跟踪什么?固定背景下的物体?一种特殊的颜色?一个特定的对象?请更具体。
  • 感谢您的评论。我已经更新了问题。

标签: c# opencv video-processing emgucv


【解决方案1】:

由于我不了解 Emgu CV,我会推荐 OpenCV。 我建议您使用 Lucas Kanade 跟踪(光流)。 您可以通过执行以下操作来跟踪对象:

  1. 从源(网络摄像头/视频文件等)读取图像
  2. 对其进行预处理(可选,但可以证明是有用的)
  3. 从一个区域(例如从一个人的头部)提取要跟踪的点。您可以使用cvGoodFeaturesToTrack 方法自动执行此操作。
  4. 然后您可以使用cvCalcOpticalFlowPyrLK 跟踪这些点,这将为您提供跟踪点的新位置。

查看更好的教程here

如果您想了解这些功能背后的概念,我强烈建议您阅读Learning OpenCV - 不幸的是,链接的书只是预览,缺少页面。

无论如何,我相信你可以想出一个可以买到这本书的地方;)。

【讨论】:

  • 感谢您的回答。我已经完成了你对 Emgu 所说的事情。现在如何将点(像素)分组为一个对象(有多个对象)?我怎样才能弄清楚方向? (好的;这可能是一个新问题:)
  • 你可以取区域的边界矩形,例如:i54.tinypic.com/15d5ncj.png
  • 请指导我如何获取边界矩形?
  • 你取点的 x 和 y 坐标的最小值和最大值,这将是边界框的左上角(min)和右下角(max)。您可以通过比较两个(或更多)连续帧中的坐标来确定方向。
  • 谢谢!我已经做到了,但我的问题是如何为不同的对象分组点?我使用了向量(来自 2 帧的 2 组点)但是如果 2 个对象具有相同的速度和方向;他们会合二为一。是否有任何其他类型的度量来将点分组为对象?谢谢
猜你喜欢
  • 2016-10-12
  • 2017-12-18
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多