我想用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用户邮件列表。