PCL :实现平面点云B样条曲线拟合
以下是一个使用PCL库实现平面点云B样条曲线拟合的示例代码:
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/surface/on_nurbs/fitting_curve_2d.h>
#include <pcl/visualization/cloud_viewer.h>
int main(int argc, char** argv)
{
// 读取点云数据
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::io::loadPCDFile<pcl::PointXYZ>("input_cloud.pcd", *cloud);
// 创建点云参数
pcl::on_nurbs::NurbsDataCurve2d data;
// 将点云数据转换为NurbsDataCurve2d格式
for (const auto& point : cloud->points) {
pcl::PointXYZ2D pt;
pt.x = point.x;
pt.y = point.y;
data.interior.push_back(pt);
}
// 创建拟合曲线对象
pcl::on_nurbs::FittingCurve2dAPDM curve_fit;
// 设置拟合参数
curve_fit.init(data);