【问题标题】:from std::vector of 3 into a pcl::PointCloud<PointXYZ>::Ptr?从 3 的 std::vector 到 pcl::PointCloud<PointXYZ>::Ptr?
【发布时间】:2021-03-12 17:23:32
【问题描述】:

我有一个障碍点云,因为我在二叉树中使用了向量的向量,我想将 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]);

【问题讨论】:

    标签: c++ point-cloud-library


    【解决方案1】:

    很可能是这样的

      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 个值都是一个点。

    【讨论】:

    • 内部向量 是三元向量,x,y,z 数据对应于云中的一个点。 vector 的“points”向量是向量格式的所有点云。所以基于假设,这意味着代码不会工作......
    • @Sam Gomai 所以你希望 points 中的每个条目都在一个单独的 pcl::PointCloud 中?从你描述的内容中,我不清楚你真正想要什么。
    【解决方案2】:
    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]));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      • 1970-01-01
      • 2020-07-31
      • 2019-05-15
      • 2015-03-26
      • 1970-01-01
      相关资源
      最近更新 更多