【问题标题】:Tracking using Masks as input使用 Masks 作为输入进行跟踪
【发布时间】:2026-01-07 07:30:01
【问题描述】:

我目前正在使用基于 CNN 的对象检测模块,该模块为我提供对象,然后我将其用作使用 OpenCV 进行跟踪的输入。到目前为止,对象检测模块产生了矩形,但我想转移到像Mask-RCNN 这样的分割模块,它输出掩码以及每个对象的矩形。蒙版是对象的更准确表示。 OpenCV 中的所有跟踪器都将矩形作为输入。有什么方法可以使用掩码而不是框来跟踪对象。如果这有助于我跟踪对象,我可以将蒙版转换为轮廓。

【问题讨论】:

  • afaik 在 OpenCV 的跟踪过程中没有内置的方式来使用掩码,但是代码是开源的,所以你也许可以适应它。
  • @Micka 但是这些方法中的大多数都将矩形作为输入,只给出 x,y 和 w,h 作为输出。您能解释一下我需要更改哪些部分吗?
  • 不,您必须自己理解代码,抱歉,这在很大程度上取决于具体的跟踪方法。举个例子:在其中一种跟踪机制中,级联分类器是即时训练的。您可以在创建训练数据时使用掩码将对象与背景分离,并引入额外的随机/不同背景以使训练更好,跟踪更稳健。

标签: opencv image-processing machine-learning opencv-python


【解决方案1】:

抱歉,OpenCV 中没有针对活动轮廓模型的内置开箱即用解决方案。

此分割模型广泛用于计算机视觉问题(由Kass on 1988 提出,是其他基于能量的分割模型的起点,如level sets modelsgeodesic active contoursfuzzy-snake model

因此,尝试在 OpenCV 上进行主动轮廓分割,有几种解决方案,但我认为您必须了解 mathematical model 才能根据应用程序的上下文正确设置参数。

Eric Yuan 有一个很好的实现(有点混淆)

以及来自 SO 的其他实现,可以帮助您在理论和实现之间建立联系:

我的建议:

  1. 阅读原论文了解参数。
  2. 在 Matlab 上测试一些例子来玩一下参数和结果。
  3. 使用此处链接的 OpenCV 测试一些实现。
  4. 为您的问题上下文确定最佳参数并进行测试。

考虑用你的成果为 OpenCV 做出贡献。

【讨论】:

    【解决方案2】:

    活动轮廓可以使用轮廓作为输入进行跟踪。 https://www.ee.iitb.ac.in/uma/~krishnan/research.html

    因此,您使用来自 cnn 模型的轮廓初始化第一帧,在后续帧中,您无需调用昂贵的转发,但能够基于此模型将轮廓更新为新的。

    【讨论】: