聚类和调整大小

时间:2017-03-29 11:12:38

标签: c++ vector elements point-clouds

我有一个大点云矢量pc可以使用。我需要识别集群,将它们移动到新的矢量并调整原始矢量的大小。在运行代码时,我没有输出。

for(int j=0; j< pc.points.size(); j++)
{
      int k= rand() % pc.points.size();

        ref_point = pc.points[k];

        for (int i = 0; i < pc.points.size(); i++)              {
            {if (pc.points[i].x - ref_point.x < 10 && pc.points[i].y - ref_point.y < 10)

               {
                    Cluster.push_back(pc.points[i]);
                    pc.points.erase(pc.points.begin() + i);
                    pc.points.shrink_to_fit();
                }

            }
                    Cluster.push_back(ref_point);
                    pc.points.erase(pc.points.begin()+k);
                    pc.points.shrink_to_fit();
}

编辑:我已经修改了我的代码,以至于我在每一步都得到了vlaues,但是在第4次迭代之后,我收到一条错误消息,说出来自VS的vector iterator + offset out of range。我哪里错了?

do
        {
            int rand1 = rand() % pc.points.size();

            ref_point = pc.points[rand1];

            for (int i = 0; i < pc.points.size(); i++)
            {
                if (pc.points[i].x - ref_point.x < 5.5 && pc.points[i].y - ref_point.y < 5.5)

                {
                    Cluster.push_back(pc.points[i]);
                    pc.points.erase(pc.points.begin() + i);
                    pc.points.shrink_to_fit();
                }

            }
            Cluster.push_back(ref_point);
            pc.points.erase(pc.points.begin() + rand1);
            pc.points.shrink_to_fit();
} while(true);

尝试在第5次迭代时从原始点云矢量pc中删除ref_point时发生错误。

0 个答案:

没有答案