【问题标题】:OpenCV, C++: How to use cv::MeanshiftOpenCV,C++:如何使用 cv::Meanshift
【发布时间】:2013-03-11 15:21:13
【问题描述】:

我有一个二维点向量,我正在尝试使用 meanshift 算法来检测数据中的多种模式,但对方法签名有点困惑。

1) 我可以传入我的向量(如果可以,以什么形式)还是必须转换为 cv::Mat(如果可以,如何?如果我有负值的点)。

2)我如何提取多种模式,从我看到的函数只返回一个 int

谢谢

【问题讨论】:

    标签: c++ opencv computer-vision


    【解决方案1】:

    OpenCV 的均值偏移实现是用于跟踪单个对象(作为CamShift algorithm 的一部分),因此我不相信它已经扩展到使用多模态分布来跟踪多个对象。它将为您提供一个以概率图像模式为中心的边界框(由cv::Rect window 的参考通道返回)。

    您的数据是否表示为混合高斯(或其他一些对称分布)?如果是这样,您也许可以使用k-means 聚类来找到您的分布均值(这将是对称分布的模式),尽管选择 k 会有问题。

    或者,可能启用跟踪多个对象(或查找多个模式)的 hack 可能涉及重复调用此函数,检索模式,然后从反投影直方图中将此部分归零。

    至于您的数据形式,函数输入是通过cv::Mat 进行的,因此您必须转换数据。但是,您声称具有负值,并且此 opencv 函数需要一个概率直方图(通常您使用 cv::calcBackProject() 从图像计算)所以我希望如果您尝试向它传递一个包含负值的 cv::Mat 它会抱怨。

    【讨论】:

      猜你喜欢
      • 2015-03-08
      • 1970-01-01
      • 2022-08-16
      • 1970-01-01
      • 1970-01-01
      • 2012-08-04
      • 2011-08-30
      • 1970-01-01
      • 2017-06-03
      相关资源
      最近更新 更多