Apprentissage PCL de la bibliothèque de nuages de points: Découpe plane dans un espace tridimensionnel (utilisation de PlaneClipper3D)

Lorsque vous utilisez PCL pour effectuer un filtrage spatial sur un nuage de points, PassThrough ne peut réaliser le filtrage que dans la direction de l'axe des coordonnées, et PlaneClipper3D peut diviser l'espace du nuage de points avec n'importe quel plan, ce qui est plus flexible. Voici comment l'utiliser:

Fonction définie:

pcl::PointCloud<PointT>::Ptr plane_clip(const pcl::PointCloud<PointT>::Ptr& src_cloud, const Eigen::Vector4f& plane, bool negative) 
{
       pcl::PlaneClipper3D<PointT> clipper(plane);
       pcl::PointIndices::Ptr indices(new pcl::PointIndices);
       clipper.clipPointCloud3D(*src_cloud, indices->indices);
       pcl::PointCloud<PointT>::Ptr dst_cloud(new pcl::PointCloud<PointT>);
       pcl::ExtractIndices<PointT> extract;
       extract.setInputCloud(src_cloud);
       extract.setIndices(indices);
       extract.setNegative(negative);
       extract.filter(*dst_cloud);
       return dst_cloud;
}

Utilisation:

1. Introduisez le fichier d'en-tête #include <pcl / filters / plane_clipper3D.h>
2. Appelez la fonction, les paramètres d'entrée sont (nuage de points d'entrée, paramètres de plan, direction de division)

cloud_out = plane_clip(cloud_in, Eigen::Vector4f(1.0,1.0, 1.0,1.0), false);
Publié 22 articles originaux · Likes2 · Visites 1157

Je suppose que tu aimes

Origine blog.csdn.net/qinqinxiansheng/article/details/105492925
conseillé
Classement