0

独自のデータ型から浮動小数点数への点群ライブラリの変換について、かなり基本的な質問だと思います。私の問題は、テンプレート、データ型、および一般的な C++ の経験不足に起因すると思います。

この変換を実行する関数はcopyToFloatArrayで、ドキュメントでは次のように定義されています。

virtual void pcl::DefaultPointRepresentation< FPFHSignature33 >::copyToFloatArray ( const FPFHSignature33 & p, float * out
) const [インライン、仮想]

ポイント データを入力ポイントから float 配列にコピーします。

このメソッドは、すべてのサブクラスでオーバーライドする必要があります。

パラメーター:

p 入力ポイント

out float 配列へのポインター。

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オブジェクトを作成できないようです。

これらの疑いが正しいかどうか、誰かが知っていますか?もしそうなら、問題を解決するためにどのような方向に進むべきでしょうか?

助けてくれてありがとう。

4

1 に答える 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);
于 2011-10-06T09:21:03.043 に答える