PCL为所有函数实例化新的点类型

时间:2016-08-30 07:33:04

标签: c++ point-cloud-library

我已经在下面声明了一个新的点类型。但是,我需要它来处理所有可用的PCL功能。例如分段,体素网格等。包含所有执行标题的PCL_INSTANTIATE调用很痛苦。无论如何,对所有主要功能都这样做吗?例如,为分段库中的所有函数编译我的点类型?

( : Grouping starts<br/>
\b : Any word boundary<br/>
\W+ : Any non-word character<br/>
\1 : Select repeated words<br/>
\b : Un select if it repeated word is joined with another word<br/>
) : Grouping ends

2 个答案:

答案 0 :(得分:1)

这就行了!

而不是使用

PCL_INSTANTIATE_PointCloud(template);

<ul class="navPages-list"> {{#each pages}} <li class="navPages-item"> <a href="{{url}}">{{name}}</a> </li> {{/each}} </ul>

我希望它有所帮助。我有2天时间寻找这个解决方案。

答案 1 :(得分:1)

更新:尝试数小时的解决方案后,这适用于所有功能:

PCLapp.h中代码的代表部分:

include pcl-1.8/pcl/point_cloud.h
include pcl-1.8/pcl/point_types.h
include pcl-1.8/pcl/filters/voxel_grid.h
include boost/shared_ptr.hpp

namespace pcl{

struct PointXYZIR
  {
    PCL_ADD_POINT4D                     // Macro quad-word XYZ
    float intensity;                    // Laser intensity
    uint16_t ring;                      // Laser ring number
    EIGEN_MAKE_ALIGNED_OPERATOR_NEW     // Ensure proper alignment
  } EIGEN_ALIGN16;
}

POINT_CLOUD_REGISTER_POINT_STRUCT(PointXYZIR,
                                  (float, x, x)
                                  (float, y, y)
                                  (float, z, z)
                                  (float, intensity, intensity)
                                  (uint16_t, ring, ring)
)


typedef pcl::PointCloud<pcl::PointXYZIR> PointCloudXYZIR;

### I didn't include any .hpp file (like tutorial said)

PCLapp.cpp中代码的代表部分(VoxelGrid示例)

boost::shared_ptr<PointCloudXYZIR> input_cloud(new PointCloudXYZIR);
PointCloudXYZIR::ConstPtr input_cloudPtr(input_cloud);

pcl::VoxelGrid<pcl::PointXYZIR> vox;
vox.setInputCloud(input_cloudPtr);
vox.setLeafSize(0.05,0.05,0.05);
vox.filter(*input_cloud);

这与所有过滤器完美配合,无需做任何其他事情。