Я новичок в PCL и поэтому не знаю, как это отладить. В учебнике я нашел код для сглаживания поверхности и расчета нормалей на основе MLS. Каждый раз, когда я хочу выполнить этот фрагмент кода, я получаю пустое облако точек. Я протестировал его на файле, зафиксированном в учебнике, в котором он работал, и на другом облаке точек, зафиксированном в другом руководстве. Здесь MLS-алгоритм вернул облако точек, но каждый нормальный был 0. Я был бы рад, если бы мне кто-нибудь помог. Есть ли ограничения на обработку баллов? В моем облаке точек 4,5 миллиона точек, и это сканирование БПЛА.
// Load input file into a PointCloud<T> with an appropriate type
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ> ());
// Create a KD-Tree
pcl::search::KdTree<pcl::PointXYZ>::Ptr tree (new pcl::search::KdTree<pcl::PointXYZ>);
// Output has the PointNormal type in order to store the normals calculated by MLS
pcl::PointCloud<pcl::PointNormal> mls_points;
// Init object (second point type is for the normals, even if unused)
pcl::MovingLeastSquares<pcl::PointXYZ, pcl::PointNormal> mls;
mls.setComputeNormals (true);
// Set parameters
mls.setInputCloud (cloud);
mls.setPolynomialOrder (2);
mls.setSearchMethod (tree);
mls.setSearchRadius (0.03);
// Reconstruct
mls.process (mls_points);