La fonction ci-dessous ne donne aucun résultat. En d'autres termes, le nombre de points dans le nuage de points est exactement le même qu'avant le sous-échantillonnage. J'ai essayé différents nombres pour la taille de feuille de 0.01 tout le chemin à ceux que vous voyez ci-dessous mais chacun d'eux produit le même résultat. J'ai dû cocher avec les conversions (comme vous le voyez ci-dessous) allant de pcl::PointCloud<T>
à pcl::PCLPointCloud2
donc je soupçonne qu'ils pourraient le problème ici.Sous-échantillon PCL avec pcl :: VoxelGrid
S'il vous plaît laissez-moi savoir si vous aviez un problème similaire et résolu. Merci.
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;
}
Merci. Votre code a montré quelque chose que j'ai oublié précédemment. – Illia