基本上,我有两个玩家位置点,我想聚集来自Vec2f的玩家位置。在opencv中的Kmean聚类
我试过的代码这个样本,但它不工作,并调用k均值功能时,它提供一个exceptin。
float *pointsdata = new float[10];
for (std::map< unsigned int, Player >::iterator it = players.begin(); it != players.end(); ++it)
{
for (int i =0; i< players.size(); i++)
{
pointsdata[i] = it->second.m_Position.x;
pointsdata[i+1] = it->second.m_Position.y;
}
}
//float pointsdata[] = { 1,1, 2,2, 6,6, 5,5, 10,10};
cv::Mat points(10, 2, CV_32F, *pointsdata);
cv::Mat labels, centers;
cv::kmeans(points, 3, labels, cv::TermCriteria(CV_TERMCRIT_EPS, 1000, 0), 1000, cv::KMEANS_RANDOM_CENTERS, centers);
cout << "labels: " << labels << endl;
cout << "centers " << centers << endl;
我们可以看到堆栈跟踪?如果在linux上,使用gdb执行它并在崩溃后输入bt。 – Brady
我怀疑pointsdata数组是否正确?我只想要一个拥有玩家x和y位置的数组并将其馈送到矩阵 – Andre
您确定'players.size()'不会大于9吗? – juanchopanza