4

我使用以下对 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 未声明,那将非常有帮助。

提前致谢 !

4

1 回答 1

2

来自opencvcvKMeans2文档:

flags – 可以是 0 或 CV_KMEANS_USE_INITIAL_LABELS。

您遗漏了CV_

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

cvKMeans2(points, count, &clusters, cvTermCriteria( CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 10, 1.0 ), 1, 0, CV_KMEANS_USE_INITIAL_LABELS, centers);
于 2012-06-16T15:26:47.637 回答