2
OpenCV kmeans를 사용하여 10 개의 2 차원 점을 클러스터하려고합니다. 코드는 다음과 같습니다opencv kmeans가 잘못된 결과를 반환합니다.
vector<Point2f>data(10);
data[0] = {118.90323, 1088.7419};
data[1] = {143.5, 1064.5};
data[2] = {110, 1054};
data[3] = {662, 645};
data[4] = {650, 625.5};
data[5] = {94, 363};
data[6] = {60, 360};
data[7] = {103.97369, 315.71054};
data[8] = {70.5, 313};
data[9] = {1466, 278.55554};
cout << "data:" << data << endl;
Mat labels;
int cluster_number = 4;
TermCriteria criteria = TermCriteria(CV_TERMCRIT_EPS + CV_TERMCRIT_ITER, 40, 0.1);
Mat centers;
kmeans(data, cluster_number, labels, criteria, 1, KMEANS_RANDOM_CENTERS, centers);
cout << "centers:" << centers << endl;
cout << "labels:" << labels << endl;
출력은 : 이것은 분명히 잘못된 것입니다
data:
[118.90323, 1088.7419; 143.5, 1064.5; 110, 1054; 662, 645; 650, 625.5; 94, 363; 60, 360; 103.97369, 315.71054; 70.5, 313; 1466, 278.55554]
centers:
[1.9113665e-38, 2.4802983e-43; 0, 0; 118.90323, 1088.7419; 0, 0]
labels:
[2; 0; 0; 0; 0; 0; 0; 0; 3; 1]
. 나는 레이블
을하고 싶은[0,0,0,1,1,2,2,2,2,3]
이 도와 주셔서 대단히 감사합니다!
어떻게 데이터를 설정 했습니까? 그것은 귀하의 코드에 표시되지 않습니다. –
안녕하세요 Andrey! 댓글 주셔서 대단히 감사합니다! 이제 초기화 작업을 추가했습니다. 벡터을 kmeans와 함께 사용하는 다른 형식으로 변환 할 수 없었습니다 ... 잘못된 배열 형식이 이상한 결과의 원인이라고 생각하십니까? –