OpenCV, c++:如何使用cv::Meanshift
OpenCV, C++: How to use cv::Meanshift
我有一个二维点的向量,我试图使用meanshift算法来检测数据中的多个模式,但我对方法签名有点困惑。
1)我可以传递我的向量(如果是什么形式),或者我必须转换为cv::Mat(如果是如何?如果我有负值的点)
2)我如何提取多个模式,从我可以看到的函数只返回一个int
谢谢
OpenCV的mean shift实现是用于跟踪单个对象的(作为CamShift算法的一部分),因此我不认为它已经扩展到使用多模态分布来跟踪多个对象。它会给你一个以概率图像(由cv::Rect window
的参考通道返回)的模式为中心的边界框。
您的数据是否表示为高斯分布(或其他对称分布)的混合?如果是这样,你可能可以使用k-means聚类来找到分布的均值(这将是对称分布的模式),尽管选择k会有问题。
或者,一个可能允许跟踪多个对象(或找到多个模式)的黑客可能涉及重复调用该函数,检索模式,然后从后投影直方图中将该部分归零。
至于数据的形式,函数输入是通过cv::Mat
,因此您必须转换数据。然而,你声称有负值,这个opencv函数期望一个概率直方图(通常你使用cv::calcBackProject()
从图像中计算),所以我希望它会抱怨,如果你试图传递它一个包含负值的cv::Mat
。
相关文章:
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 概念中的cv限定符需要表达式参数列表
- 将CHW格式的浮点向量转换为cv::Mat
- 错误的cv::face FacemarkLBF实例化
- 如何检查给定的参数是否为 cv::noArray()?
- 开放 CV 中的动态内存分配,用于视频处理
- 如何在 opencv 中使用 cv::VideoCapture::waitAny()
- 错误:未定义对cv::cudacodec::createVideoReader的引用
- OpenCV 3.4.1 error readNetFromTensorflow 无法在 cv::d nn::ReadProtoFromBinaryFile 中打开 .pb
- C++:从GPU内存(cudaMemcpy2D)获取BGR图像(cv::Mat)
- 选择基于另一个垫子的非零像素的cv::Mat的一部分?
- 将 cv::mat 转换为 QImage
- Inference pytorch C++ with alexnet and cv::imread image
- OpenCV 3.4.3 中对 'cv::String::d eallocate()' 错误的未定义引用
- cv::Normalise() 中的 L2_NORM 和 NORM_MINMAX 实现有什么区别?
- 将 cv::Mat 转换为 std::vector 的通用函数
- OpenCV undefined reference to 'cv::imread(cv::String const&, int)'
- 在 QML VideoOutput 中将 cv::mat 显示为 QVideoFrame
- cv::meanShift函数包含什么
- OpenCV, c++:如何使用cv::Meanshift