OpenCV kmeans:N> = K异常,错误(-215)

时间:2015-01-23 16:46:28

标签: opencv k-means

当我尝试使用kmeans时:

int K = 4;
Mat labels;
Mat centers;
std::vector<float> values;

// (put a bunch of values into "values" here...)

kmeans(values, K, labels, TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 10, 1.0), 10, KMEANS_PP_CENTERS, centers);

我收到错误:“错误:(-215)N&gt; = K函数kmeans”

values.size()= 360000,所以N显然大于K.是什么给出的?感谢。

2 个答案:

答案 0 :(得分:3)

OpenCV奇怪地将一维数据解释为1元素数组。

以下内容应该可以修复行为:

kmeans(cv::Mat(values).reshape(1, values.size()), K, labels, TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 10, 1.0), 10, KMEANS_PP_CENTERS, centers);

答案 1 :(得分:0)

我遇到了同样的问题。

这对我有用。 将矢量转换为Mat。

int K = 4;
Mat labels;
Mat centers;
std::vector<float> values;
Mat points=Mat(values,true);
points.convertTo(points, CV_32F);
kmeans(points, K, labels, TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 10, 1.0), 10, KMEANS_PP_CENTERS, centers);