#include <vtkSTLReader.h>
#include <vtkSmartPointer.h>
#include <vtkPolyData.h>
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>
#include <pcl/io/vtk_lib_io.h>
#include <pcl/io/pcd_io.h>
int main()
{
std::string stl_file = "01.stl"; // 替换为您的 STL 文件路径,单写文件名放在cpp同目录
std::string pcd_file = "01.pcd"; // 替换为您的输出 PCD 文件路径,单写文件名放在cpp同目录
// 读取 STL 文件
vtkSmartPointer<vtkSTLReader> reader = vtkSmartPointer<vtkSTLReader>::New();
reader->SetFileName(stl_file.c_str());
reader->Update();
vtkSmartPointer<vtkPolyData> polydata = vtkSmartPointer<vtkPolyData>::New();
polydata = reader->GetOutput();
polydata->GetNumberOfPoints();
polydata->BuildCells();
// 将 vtkPolyData 转换为 PointCloud 对象
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>());
pcl::io::vtkPolyDataToPointCloud(polydata, *cloud);
// 保存为 PCD 文件
pcl::io::savePCDFileBinary(pcd_file, *cloud);
std::cout << "STL 文件已成功转换为 PCD 文件:" << pcd_file << std::endl;
return 0;
}
stl文件转pcd格式
最新推荐文章于 2024-07-18 23:31:00 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)