我使用以下对 openCV 函数的调用来执行 K-means 算法:
cvKMeans2(points, count, &clusters, cvTermCriteria( CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 10, 1.0 ), 1, CV_KMEANS_USE_INITIAL_LABELS, centers);
在哪里
image2 = cvLoadImage( "lab.jpg", 0);
points = cvCreateMat( image2->height, image2->width, CV_32FC1 );
cvConvert(image2, points);
//count= number of clusters.
CvMat* centers; // To store the center of each cluster. (output).
lab.jpg 是 CIE L*a*b* 格式的图像。
但是上面这行在编译时显示以下错误:
`CV_KMEANS_USE_INITIAL_LABELS' undeclared (first use in this function)
too many arguments to function `cvKMeans2'
如果有人能指出错误的地方,特别是第一个错误说 KMEANS_USE_INITIAL_LABELS 未声明,那将非常有帮助。
提前致谢 !
最佳答案
来自 opencv doc 的 cvKMeans2
:
您遗漏了 CV_ 。
编辑:还要注意 和 termcrit
之间应该有 两个 参数,因此您要跳过 flags
或 attempts
。尝试cvKMeans2(points, count, &clusters, cvTermCriteria( CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 10, 1.0 ), 1, 0, CV_KMEANS_USE_INITIAL_LABELS, centers);