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

时间:2016-03-06 17:22:04

标签: c++ opencv k-means

我的代码如下:

Mat cflow; /*computed optical flow */

Mat p = Mat::zeros ( cflow.cols* cflow.rows, 5, CV_32F);
...
...( initializations of p ) 
...


int K = 10;
cv::kmeans(p,K,bestLabels,TermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 10,1.0),3,KMEANS_PP_CENTERS,centers);

我想出了以下错误:

  

错误:(-215)N> = K,函数K表示。

显然N> = K,但我怎样才能重塑它以使其有效?

1 个答案:

答案 0 :(得分:1)

错误表示(5维)点N(即矩阵p的行)的数量小于K

显然,您无法将N (<K)点集群到K群集。

确保矩阵p始终至少有K行,并输入如下控制语句:

int K = 10;
if(p.rows < K) { 
    // can't run kmeans with K cluster... 
} else {
    // kmeans(p, K, ...);
}

在致电kmeans之前。