c++ pcl 在PCLVisualizer.addpointcloud进行点云可视化后 将点云对象reset降低内存,而后根据点云id获取点云对象指针
时间: 2023-12-17 14:03:35 浏览: 187
可以通过以下步骤来实现:
1. 在可视化之前,先创建一个点云对象指针,用于存储点云数据。
```c++
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
```
2. 加载点云数据到该指针中。
```c++
pcl::io::loadPCDFile<pcl::PointXYZ>("cloud.pcd", *cloud);
```
3. 将点云数据添加到 PCLVisualizer 中进行可视化。
```c++
pcl::visualization::PCLVisualizer viewer("Cloud Viewer");
viewer.addPointCloud(cloud, "cloud");
viewer.spin();
```
4. 可视化完成后,将点云对象 reset 以释放内存。
```c++
cloud.reset();
```
5. 根据点云 id 获取点云对象指针。
```c++
pcl::visualization::PointCloudColorHandlerGenericField<pcl::PointXYZ> color_handler(cloud, "z");
viewer.updatePointCloud(cloud, color_handler, "cloud");
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_ptr = viewer.getPointCloud<pcl::PointXYZ>("cloud");
```
注意:需要在 PCLVisualizer 中使用与之前相同的 id 名称来更新点云。
阅读全文