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

OpenCV kmeans: N>=K exception , error (-215)

本文关键字:异常 错误 -215 kmeans gt OpenCV      更新时间:2023-10-16

我的代码如下:

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 ,但是我如何重塑它以使其工作?

该误差意味着(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之前。