繁体   English   中英

OpenCV,C ++:如何使用cv :: Meanshift

[英]OpenCV, C++: How to use cv::Meanshift

我有一个2-D点的向量,我试图使用meanshift算法来检测数据中的多个模式,但我对方法签名有点困惑。

1)我可以传入我的向量(如果是这样以什么形式)或者我必须转换到cv :: Mat(如果是这样的话?如果我有负值的点)。

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

谢谢

OpenCV的均值平移实现是为了跟踪单个对象(作为CamShift算法的一部分),因此我不相信它已被扩展为使用多模态分布跟踪多个对象。 它将为您提供一个以概率图像模式为中心的边界框(由cv::Rect window的引用传递返回)。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM