我使用以下对 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 doccvKMeans2 :



您遗漏了 CV_

编辑:还要注意 termcrit 之间应该有 两个 参数,因此您要跳过 flagsattempts 。尝试

cvKMeans2(points, count, &clusters, cvTermCriteria( CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 10, 1.0 ), 1, 0, CV_KMEANS_USE_INITIAL_LABELS, centers);

10-07 13:23