标签: mean-shift

如何在C++中使用OpenCV检测多个对象?

我从这里得到了灵感,这是一个Python实现,但我需要C++,这个答案非常有效,我的想法是:detectAndCompute获取keypoints,使用kmeans它们将它们分割成簇,然后为每个簇做matcher->knnMatch每个descriptors,然后做其他的东西,如常见的单一检测方法.主要问题是,如何descriptors为每个集群的matcher->knnMatch流程提供?我以为我们应该将keypoints对应的值设置descriptor为0(无用),对不对?我的尝试遇到了一些问题:

  1. 如何估算群集数kmeans
  2. 为什么可以为这样的集群创建Mat数组Mat descriptors_scene_clusters[3] = { Mat(descriptors_scene.rows, descriptors_scene.cols, CV_8U, Scalar(0)) };

非常感谢任何帮助,请!


产量

#include <stdio.h>
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/features2d/features2d.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/calib3d/calib3d.hpp>
#include <opencv2/xfeatures2d.hpp>

using namespace cv;
using namespace cv::xfeatures2d;

#define MIN_MATCH_COUNT 10

int main()
{
    Mat img_object = imread("./2.PNG", IMREAD_GRAYSCALE);
    Mat img_scene = imread("./1.PNG", IMREAD_GRAYSCALE);

    Ptr<ORB> detector …
Run Code Online (Sandbox Code Playgroud)

c++ opencv k-means mean-shift opencv3.0

15
推荐指数
1
解决办法
1501
查看次数

python的MeanShift模块中估计带宽时如何选择合适的分位数值?

我正在对数据集执行均值平移聚类。estimate_bandwidth 函数估计执行均值漂移聚类的适当带宽。

句法:

sklearn.cluster.estimate_bandwidth(X, quantile=0.3, n_samples=None, random_state=0)
Run Code Online (Sandbox Code Playgroud)

我发现估计的带宽随着分位数的增加而增加,从而导致簇数量减少。类似地,分位数的减少会减少带宽,从而导致更高的数量。簇。

所以,看来不行。簇的数量取决于所选的分位数值。

如何选择最佳分位数?

python cluster-analysis mean-shift

8
推荐指数
1
解决办法
5785
查看次数

如何使用 python opencv 中的均值平移查找图像中的簇?

我尝试寻找均值平移的 OpenCV 方法,但没有任何结果。我正在寻找一种方法来查找图像中的簇,并使用 python OpenCV 将它们替换为它们的平均值。任何线索将不胜感激。

例如:

输入:

在此输入图像描述

输出:

在此输入图像描述

python opencv image-segmentation mean-shift

2
推荐指数
1
解决办法
6584
查看次数