OpenCV kmeans:N>=K 异常,错误 (-215)
OpenCV kmeans: N>=K exception , error (-215)
我的代码如下:
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);
然后我想出了以下错误:
error: (-215) N >= K in function K means .
显然 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
.
之前
我的代码如下:
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);
然后我想出了以下错误:
error: (-215) N >= K in function K means .
显然 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
.