【问题标题】:How to create pcl::PointIndices from std::vector<int> with `pcl`(Point Cloud Library) in c++?如何在 c++ 中使用 `pcl`(点云库)从 std::vector<int> 创建 pcl::PointIndices?
【发布时间】:2020-12-27 05:52:53
【问题描述】:

我在 c++ 中使用pcl,为无法创建pcl 标签而道歉。

我正在用pcl 实现点云分割管道。我想知道如何从提取的std::vector&lt;int&gt; 类型的索引中创建 pcl::PointIndices,以便将其输入到另一个过滤器中。

第一个过滤器可以生成 std​​::vector 类型的索引

// Create statistical filtering object
pcl::StatisticalOutlierRemoval<PointXYZ> sor;
CloudXYZPtr sor_filtered (new CloudXYZ);
std::vector<int> sor_inliers;

sor.setInputCloud (input);
sor.setMeanK (10);
sor.setStddevMulThresh (0.5);
sor.filter (sor_inliers);

然后,我想将此过滤后的 incides 输入到另一个过滤器中,例如:

pcl::RadiusOutlierRemoval<PointXYZ> ror;
pcl::PointIndices::Ptr ror_indices (new pcl::PointIndices);
ror_indices->data = sor_inliers;  // #### How to do this line?
std::vector<int> ror_inliers;

//I can set it like
ror.setInputCloud(input);
ror.setIndices(ror_indices);

如何让它发挥作用?谢谢。

【问题讨论】:

    标签: c++ point-cloud-library


    【解决方案1】:

    这个:

    ror_indices->data = sor_inliers;  // #### How to do this line?
    

    应该是:

    ror_indices->indices = sor_inliers;
    

    【讨论】:

    • 谢谢。但是,考虑到性能,这样分配是否是一种好方法?
    • 如果您不再需要sor_inliers,您可以从std::move(sor_inliers) 分配来移动数据,几乎不需要任何时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    • 2012-10-07
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    相关资源
    最近更新 更多