从指定文件夹读取pcd格式点云转mesh,然后将mesh存储为pcd格式到指定文件夹下,并且可视化mesh,用 pcl 1.8.1c++代码实现,整理成我可以直接使用的代码,然后给出cmakelists
时间: 2024-02-29 15:56:08 浏览: 106
好的,以下是我整理的能够实现您要求的代码,注意需要安装 PCL 1.8.1:
```c++
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/io/vtk_lib_io.h>
#include <pcl/surface/poisson.h>
#include <pcl/visualization/pcl_visualizer.h>
int main(int argc, char** argv)
{
std::string input_dir = "/path/to/input/directory/";
std::string output_dir = "/path/to/output/directory/";
// 读取点云数据
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::io::loadPCDFile<pcl::PointXYZ>(input_dir + "input.pcd", *cloud);
// 进行 Poisson 表面重建
pcl::Poisson<pcl::PointXYZ> poisson;
poisson.setDepth(10);
poisson.setInputCloud(cloud);
pcl::PolygonMesh mesh;
poisson.reconstruct(mesh);
// 存储 mesh 数据
pcl::io::savePolygonFileVTK(output_dir + "output.vtk", mesh);
// 将 mesh 可视化
pcl::visualization::PCLVisualizer viewer("Poisson Reconstruction Viewer");
viewer.addPolygonMesh(mesh, "mesh");
viewer.spin();
return 0;
}
```
同时,您需要在项目根目录下创建一个 `CMakeLists.txt` 文件,并填入以下内容:
```cmake
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
project(pcd2mesh LANGUAGES CXX)
find_package(PCL 1.8.1 REQUIRED COMPONENTS io visualization surface)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(pcd2mesh pcd2mesh.cpp)
target_link_libraries(pcd2mesh ${PCL_LIBRARIES})
```
注意修改 `input_dir` 和 `output_dir` 为您实际的路径。这个代码会将点云从 `input_dir` 读入,进行 Poisson 表面重建,将 mesh 存储到 `output_dir` 下,并且在窗口显示 mesh 的可视化效果。
阅读全文