首页 文章

Point Cloud Library从专有格式转换为float;找不到匹配功能

提问于
浏览
0

我认为这是一个相当基本的问题,关于point cloud library从专有数据类型到float的转换 . 我认为我的问题来自缺乏模板,数据类型和C的经验 .

应执行此转换的函数是copyToFloatArray,在文档中定义为:

virtual void pcl :: DefaultPointRepresentation <FPFHSignature33> :: copyToFloatArray(const FPFHSignature33&p,float * out)const [inline,virtual]将点数据从输入点复制到float数组 . 必须在所有子类中覆盖此方法 . 参数:p输入指向输出指向浮点数组的指针 . 实现pcl :: PointRepresentation <FPFHSignature33> .

我试图按如下方式实现它:

pcl::PointCloud<pcl::FPFHSignature33>::Ptr fpfhs (new pcl::PointCloud<pcl::FPFHSignature33> ());
// populate fpfh...
float **myArray;
pcl::DefaultPointRepresentation< pcl::FPFHSignature33 >::copyToFloatArray ( &fpfhs, &**myArray);

编译时抛出的错误如下:

/home/bc/PCL/pcd_read.cpp: In function ‘int main(int, char**)’:
/home/bc/PCL/pcd_read.cpp:68: error: no matching function for call to 
‘pcl::DefaultPointRepresentation<pcl::FPFHSignature33>::copyToFloatArray(boost::shared_ptr<pcl::PointCloud<pcl::FPFHSignature33> >*, float*)’
/usr/include/pcl-1.2/pcl/point_representation.h:254: note: candidates are: 
virtual void pcl::DefaultPointRepresentation<pcl::FPFHSignature33>::copyToFloatArray(const pcl::FPFHSignature33&, float*) const
make[2]: *** [CMakeFiles/pcd_read.dir/pcd_read.cpp.o] Error 1
make[1]: *** [CMakeFiles/pcd_read.dir/all] Error 2
make: *** [all] Error 2

似乎问题是在传递给函数的第一个参数中,但我似乎无法创建 const FPFHSignature33 & p 对象 .

有没有人知道这些怀疑是否正确,如果是这样,我可以采取什么方向来开始解决问题?

谢谢你的帮助 .

1 回答

  • 0

    首先,您需要在floatArray中分配内存 . 然后,你需要使用*来解冻fpfhs ptr . 最后,那里不需要双指针数组 .

    这是更正后的代码:

    pcl::PointCloud<pcl::FPFHSignature33>::Ptr fpfhs (new pcl::PointCloud<pcl::FPFHSignature33> ());
    // populate fpfh...
    float *myArray = new float[ 3* point_count ];
    pcl::DefaultPointRepresentation< pcl::FPFHSignature33 >::copyToFloatArray ( *fpfhs, myArray);
    

相关问题