如何在kmeans之后显示聚集图像?

时间:2016-03-24 15:33:22

标签: c++ opencv type-conversion k-means

我想使用数组作为k均值算法的输入。该数组具有x和y方向的位移值,并且是Lucas Kanade光流估计的结果。代码如下:

已编辑:

int number_of_features=150;
// Lucas Kanade optical flow 
cvCalcOpticalFlowPyrLK(frame1_1C,frame2_1C,pyramid1,pyramid2,frame1_features,frame2_features,number_of_features,optical_flow_window, 5,optical_flow_found_feature, optical_flow_feature_error,optical_flow_termination_criteria, 0 );

float Dx[150],Dy[150]; // displacement matrices
float  Dis[150][2]; // total displacement matrix

int K=2; // clusters selected
Mat bestLabels, centers;

for(int i = 0; i < number_of_features; i++)
{
CvPoint p,q;
p.x = (int) frame1_features[i].x;
p.y = (int) frame1_features[i].y;
q.x = (int) frame2_features[i].x;
q.y = (int) frame2_features[i].y;

//displacements
Dx[i]=p.x-q.x;
Dy[i]=p.y-q.y;

Dis[i][0] = Dx[i];
Dis[i][1] = Dy[i];

}


// k means algorithm


// Creating Mat for Input data
cv::Mat flt_Dis(150, 2, CV_32F, Dis);

cv::kmeans(flt_Dis, K, bestLabels,TermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 10, 1.0),3, KMEANS_PP_CENTERS, centers);

我已经解决了我之前的问题,现在我想显示聚集的图像。我想bestLabels存储每个元素的索引,例如如果它被归类为第0类或第1类。我对吗 ??如何显示聚簇图像?

1 个答案:

答案 0 :(得分:0)

K-means 可以实现来处理整数。你必须这样做。

但结果不是整数。