这里把上一篇文章中分析的函数源码及其注释张贴出来,具体如下。
void CirclesGridClusterFinder::hierarchicalClustering(const std::vector<Point2f> &points, const Size &patternSz, std::vector<Point2f> &patternPoints)
{
#ifdef HAVE_TEGRA_OPTIMIZATIONif(tegra::useTegra() && tegra::hierarchicalClustering(points, patternSz, patternPoints))return;
#endifint j, n = (int)points.size();size_t pn = static_cast<size_t>(patternSz.area());patternPoints.clear();if (pn >= points.size()){// 如果点数刚好与需要的大小相同,则直接拷贝(未对数据的正确性做进一步的判断)if (pn == points.size())patternPoints = points;// 如果点数小于需要的大小,直接返回return;}// 计算点之间的距离矩阵,这里利用矩阵的对称性来减少一半计算量(dists[i][j]=dist