C++ PCL:使用RANSAC访问线模型近似的PCL::ModelCourters::Ptr字段

C++ PCL:使用RANSAC访问线模型近似的PCL::ModelCourters::Ptr字段,c++,point-cloud-library,ransac,C++,Point Cloud Library,Ransac,我正在尝试使用点云库提供的RANSAC方法估计穿过点云点的直线。 我可以创建对象,并毫无问题地估计线模型,因此: pcl::PointCloud<pcl::PointXYZ>::ConstPtr source_cloud(new pcl::PointCloud<pcl::PointXYZ>); pcl::ModelCoefficients::Ptr line_coefficients(new pcl::ModelCoefficients); pcl::PointIndic

我正在尝试使用点云库提供的RANSAC方法估计穿过点云点的直线。 我可以创建对象,并毫无问题地估计线模型,因此:

pcl::PointCloud<pcl::PointXYZ>::ConstPtr source_cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::ModelCoefficients::Ptr line_coefficients(new pcl::ModelCoefficients);
pcl::PointIndices::Ptr inliers (new pcl::PointIndices);

// Populate point cloud...

// Create the segmentation object 
pcl::SACSegmentation<pcl::PointXYZ> seg;
seg.setModelType (pcl::SACMODEL_LINE);
seg.setMethodType (pcl::SAC_RANSAC);
seg.setDistanceThreshold (distance_thresh);
seg.setInputCloud (source_cloud); 
seg.segment (*inliers, *line_coefficients);
然而,这是行不通的。我不断得到错误:

“pcl::ModelCourters”中没有名为“line_direction”的成员

我真的不知道我做错了什么。。。有人有什么想法吗?
提前谢谢

文档只是告诉您如何解释这些值是一个结构,其成员
类型为
std::vector

因此,要获得线的方向和线上的点,请执行以下操作:

const auto pt_line_x = line_coefficients->values[0];
const auto pt_line_y = line_coefficients->values[1];
const auto pt_line_z = line_coefficients->values[2];
const auto pt_direction_x = line_coefficients->values[3];
const auto pt_direction_y = line_coefficients->values[4];
const auto pt_direction_z = line_coefficients->values[5];

你完全正确!非常感谢。我应该看看它的实现!
const auto pt_line_x = line_coefficients->values[0];
const auto pt_line_y = line_coefficients->values[1];
const auto pt_line_z = line_coefficients->values[2];
const auto pt_direction_x = line_coefficients->values[3];
const auto pt_direction_y = line_coefficients->values[4];
const auto pt_direction_z = line_coefficients->values[5];