从 std::vector of 3 到 pcl::PointCloud<PointXYZ>::Ptr?

from std::vector of 3 into a pcl::PointCloud<PointXYZ>::Ptr?

我有一个障碍物点云,因为我在我的二叉树中使用了向量的向量,我想将 3 个元素的 std::vector 中的值插入到 pcl::PointCloud::Ptr 对象中做聚类。

std::vector<std::vector<float> > points;
typename pcl::PointCloud<PointXYZ>::Ptr cluster(new pcl::PointCloud<PointT>);
// next line is not possible, but how do I insert the component of vector<float> into the x,y,z of  struct PointXYZ
cluster->push_back(points[idx]);

很可能是

  for (int j=0; j<points.size(); ++j) {
    std::vector<float> &vec = points[j];   
    for (int i=0;i<vec.size();i+=3)
          cluster->push_back(PointXYZ(vec[i], vec[i+1], vec[i+2]));
  }

我假设内部 std::vector 中的每 3 个值是一个点。

for (int i=0; i<points.size(); ++i) {
    if (points[i].size() != 3)
        continue;
    cluster->push_back(pcl::PointXYZ(points[i][0], points[i][1], points[i][2]));
}