如何创建PCL Feature类的通用实例?

时间:2012-09-03 07:01:16

标签: templates eigen point-cloud-library

我想用PCL计算各种功能。我的想法是创建一个程序,根据命令行上给出的内容(类的名称及其参数)创建功能,计算它们并将它们写入文件。

因此我需要一些创建“通用”功能的代码。 PCL功能是模板类。必须使用输入类型(要计算它们的数据类型)和输出类型来实例化它们。输入类型通常是pcl::PointCloud所以我不认为这是一个问题。对于输出,我使用Eigen::MatrixXf作为“通用”输出类型。 但是我有一些奇怪的错误。

我写了一个最小的例子(它使用了一些typedef以便更容易修改):

#include <pcl/point_types.h>
#include <pcl/features/normal_3d.h>
#include <pcl/features/fpfh.h>

typedef pcl::PointXYZ  Input_T;
//#define USE_EIGEN
#ifdef USE_EIGEN
#warning "USING EIGEN"
typedef Eigen::MatrixXf Output_T;
#else
typedef pcl::PointNormal Output_T;
#endif

int main()
{
  pcl::Feature<Input_T, Output_T>* q = new pcl::NormalEstimation<Input_T, Output_T>;
}

如果按“原样”编译它应该有效。如果取消注释第7行,它将不再起作用。 GCC给出的错误是:

tmp/test.cc:16:49: erreur: cannot convert ‘pcl::NormalEstimation<pcl::PointXYZ, Eigen::Matrix<float, -0x00000000000000001, -0x00000000000000001> >*’ to ‘pcl::Feature<pcl::PointXYZ, Eigen::Matrix<float, -0x00000000000000001, -0x00000000000000001> >*’ in initialization

我在Ubuntu 12.04下使用PCL 1.6和GCC 4.6.3。

知道什么是错的? 我没有成功地询问PCL用户邮件列表。

0 个答案:

没有答案