以下の関数は結果を生成しません。言い換えれば、ポイントクラウドのポイント数は、ダウンサンプリング前のポイント数とまったく同じです。私は葉のサイズを0.01から、あなたが以下に見るものまで様々な数を試しましたが、それらのすべてが同じ結果を生み出しています。私はpcl::PointCloud<T>
からpcl::PCLPointCloud2
へのコンバージョンを目にしていたので、ここで問題が起きていると思われます。pcl :: VoxelGridを使用したPCLダウンサンプル
似たような問題があった場合は教えてください。 ありがとうございます。
typedef pcl::PointCloud<pcl::PointXYZ>::Ptr PointCloudPtr;
void PlantVis::downsample(PointCloudPtr cloud) {
pcl::PCLPointCloud2::Ptr cloud2(new pcl::PCLPointCloud2());
pcl::toPCLPointCloud2(*cloud, *cloud2);
pcl::PCLPointCloud2::Ptr cloud_filtered(new pcl::PCLPointCloud2());
pcl::VoxelGrid<pcl::PCLPointCloud2> sor;
sor.setInputCloud(cloud2);
sor.setLeafSize(500000000.01f, 500000000.01f, 500000000.01f);
sor.filter(*cloud_filtered);
pcl::PointCloud<pcl::PointXYZ>::Ptr m_cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::fromPCLPointCloud2(*cloud_filtered, *m_cloud);
cloud = m_cloud;
}
ありがとうございます。あなたがコードは私が以前見落としたことを示しました。 – Illia