将STL模型转成点云有许多方法,最简单的应该是直接利用 pcl_mesh2pcd
,这个网上有许多教程,直接跑 _exe_程序就行了,不过如果需要自己进行编辑的话可以上GitHub看看代码,个人觉得比较复杂,对我不是特别友好,因此这里记录一下另一个将STL模型转成点云数据的简单方法,参照博客PCL学习(二)三维模型转点云 obj转pcd—-PCL实现,最少只需要四行代码就行了。
- 系统:Windows10 x64
- 编程软件:Visual Studio 2022 current
- 语言:C、C++
- 包含内容:PCL 1.11.0(包括Boost、Eigen、FLANN、Qhull、VTK、OpenNI2)
直接贴代码
pcl::PolygonMesh mesh;
pcl::io::loadPolygonFile("D:/MNI152_1mm_value1/all1_anat.stl", mesh);
pcl::PointCloud<pcl::PointXYZ>::Ptr stl_cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::fromPCLPointCloud2(mesh.cloud, *stl_cloud);
原博客中是将 obj_转为 _pcd,不过 polygonmesh
类型数据也可以读取 stl_文件,因此也可以用来将 _stl_转为 _pcd,如果单个面的点过少,原博客还提供了进一步的方法( pcl_mesh_sampling
)。
另外还在网上看到了从多个视角将stl模型转换为点云的代码,核心是利用 renderViewTesselatedSphere
函数,具体可以参照博客3D视觉学习之路——基于pcl从CAD模型中获取单视角点云,不过由于视角固定,除非更改函数内部代码,否则只能从固定的几十个视角获取点云。
最后有一点,编译的时候可能会出现PCL有关的 _C4996_错误,解决方法可以在网上找到很多,我的情况是之前还能顺利编译,突然就出现这个错误了,在重启了一遍VS之后就解决了。
Original: https://blog.csdn.net/st_dog/article/details/122193880
Author: 绅士007
Title: STL模型转点云数据
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/533547/
转载文章受原作者版权保护。转载请注明原作者出处!