gpt4 book ai didi

c++ - CGAL:手动创建用于形状检测的点集

转载 作者:行者123 更新时间:2023-11-28 01:20:32 26 4
gpt4 key购买 nike

我正在尝试根据 "Basic Planar Shape Detection" example 使用 CGAL 的形状检测算法在 CGAL 4.13.1 中。但是,不是从文件中读入数据

CGAL::read_xyz_points(stream,
std::back_inserter(points),
CGAL::parameters::point_map(Point_map()).
normal_map(Normal_map()))

我想将我的点从现有的 pcl::PointCloud 加载到必要的 CGAL 类型。我只是不确定如何创建此 CGAL 类型。根据例子(节选)

typedef std::pair<Kernel::Point_3, Kernel::Vector_3> Point_with_normal;
typedef std::vector<Point_with_normal> Pwn_vector;

Pwn_vector points;
typedef CGAL::Shape_detection_3::Efficient_RANSAC<Traits> Efficient_ransac;
EfficientRansac.set_input(points);

我只需要创建 Pwn_vector。所以我的问题是

  1. 我可以只在 Pwn_vector 中插入点吗?
  2. 在 CGAL 中获取法线的最佳方法是什么?是 CGAL::jet_estimate_normals 吗?
  3. 我需要 Point_mapNormal_map 的属性映射吗?我不明白它们是如何交给 Efficient_ransac 的。
  4. 还有什么需要的吗?

我从以下代码开始:

  // Points with normals.
cgal::Pwn_vector points;

// load points from pcl cloud
for (auto point : cloud.points) {
cgal::Point_with_normal pwn;
pwn.first = cgal::ShapeKernel::Point_3(point.x, point.y, point.z);
points.push_back(pwn);
}

(PCL 对于这个问题不感兴趣,因为它很清楚如何访问单个坐标。)

最佳答案

要逐点回答,我会说:

  1. 您需要提供点和法线,所以我会拒绝。

  2. 你可以使用 [jet]( https://doc.cgal.org/latest/Point_set_processing_3/group__PkgPointSetProcessing3Algorithms.html#ga0cd0f87de690d4edf82740e856efa491 ), pcavcm正常估算,如你所愿。

  3. 如果您使用与示例中相同的类型,则不需要它们。默认值即可。

  4. 基本上,您只需要用您的点和正常估计的结果填充 Pwn_vector,其余的应该完全按照示例中的方式工作。

关于c++ - CGAL:手动创建用于形状检测的点集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56495711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com