PCL:SACSegmentationFromNormals不起作用

时间:2017-12-22 15:06:51

标签: c++ point-cloud-library ransac

我遇到了PCL结构SACSegmentationFromNormals的问题。我想用C ++进行圆柱分割。类似的平面分割工作得很好,但在这里我得到错误信息:

" PCL :: SACSegmentationFromNormals :: initSACModell未给出输入数据!无法继续。"

我正在使用PointXYZRGBA和pcl :: Normals。有人有想法吗?到目前为止,这是我的代码:

 `pcl::ModelCoefficients::Ptr ProMaTFC::fitting() {

 ...

 pcl::ModelCoefficients::Ptr coefficients(new pcl::ModelCoefficients);
 pcl::SACSegmentationFromNormals<pcl::PointXYZRGBA, pcl::Normal> seg;
 seg.setOptimizeCoefficients(true);
 seg.setModelType(pcl::SACMODEL_CYLINDER);
 seg.setMethodType(pcl::SAC_RANSAC);
 seg.setDistanceThreshold(0.1);
 seg.setInputCloud(cloud->makeShared());
 seg.setRadiusLimits(0, 5);
 pcl::PointIndices inlierIndices;
 segmentation.segment(inlierIndices, *coefficients_cylinder);

 ...
 return coefficients_cylinder;
 }`

我使用以下库(如果你想知道):

`#include <pcl/ModelCoefficients.h> 
#include <pcl/io/pcd_io.h> 
#include <pcl/point_types.h> 
#include <pcl/filters/extract_indices.h>   
#include <pcl/filters/passthrough.h> 
#include <pcl/features/normal_3d.h> 
#include <pcl/sample_consensus/method_types.h> 
#include <pcl/sample_consensus/model_types.h> 
#include <pcl/segmentation/sac_segmentation.h> `

1 个答案:

答案 0 :(得分:1)

如果要使用常规信息来估算参数,则应调用函数setInputNormals()