我认为,关于点云库中从固有数据类型到浮动的转换,我有一个相当基本的问题。我认为我的问题来自于缺乏模板、数据类型和C++方面的经验。
应该执行此转换的函数是copyToFloatArray,在文档中定义为:
虚拟无效pcl::DefaultPointRepresentation< FPFHSignature33 >:copyToFloatArray( const FPFHSignature33 & p,float * out ) )内联的,虚拟的 将点数据从输入点复制到浮点数组。 此方法必须在所有子类中被覆盖。 参数: 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对象。
有没有人知道这些怀疑是否正确,如果是的话,我会采取什么方向来开始解决这个问题?
谢谢你的帮助。
发布于 2011-10-06 09:21:03
首先,您需要在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);https://stackoverflow.com/questions/7672321
复制相似问题