viewer.addPointCloud(cloud); while (!viewer.wasStopped()) viewer.spinOnce(100);//
时间: 2024-04-12 17:33:49 浏览: 68
这段代码展示了如何使用 `pcl::visualization::PCLVisualizer` 类来显示一个点云。
- `viewer.addPointCloud(cloud)`:该函数用于将点云数据 `cloud` 添加到可视化窗口中进行显示。
- `viewer.spinOnce(100)`:该函数用于循环显示可视化窗口,参数 `100` 表示每次循环的等待时间为 100 毫秒。这样可以保持窗口的持续显示,直到窗口被关闭或者其他事件触发停止。
通过以上代码,我们可以将点云数据显示在一个可视化窗口中,并通过循环保持窗口的持续显示。
相关问题
viewer.addPointCloud(model_keypoints, model_keypoint_color, "model_keypoints"); viewer.addPointCloud(scene_keypoints, scene_keypoint_color, "scene_keypoints"); viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "model_keypoints"); viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "scene_keypoints");如何改成对原始点云可视化
如果你想要可视化原始点云,可以直接使用 `addPointCloud` 函数。下面是示例代码:
```cpp
pcl::visualization::PCLVisualizer viewer("Point Cloud Viewer");
pcl::PointCloud<pcl::PointXYZ>::Ptr model_cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::PointCloud<pcl::PointXYZ>::Ptr scene_cloud(new pcl::PointCloud<pcl::PointXYZ>);
// load your model and scene point clouds
// visualize model point cloud
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> model_color(model_cloud, 255, 0, 0);
viewer.addPointCloud(model_cloud, model_color, "model_cloud");
viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "model_cloud");
// visualize scene point cloud
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> scene_color(scene_cloud, 0, 255, 0);
viewer.addPointCloud(scene_cloud, scene_color, "scene_cloud");
viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "scene_cloud");
while (!viewer.wasStopped())
{
viewer.spinOnce();
}
```
在这个示例中,我们使用 `addPointCloud` 函数可视化了原始的模型点云和场景点云。同时,我们设置了点云的渲染属性,包括点的大小和颜色。最后,我们使用 `viewer.spinOnce()` 函数来显示点云,并且等待用户关闭可视化窗口。
#include<iostream> #include<pcl/io/pcd_io.h> #include<pcl/visualization/cloud_viewer.h> void viewerOneOff(pcl::visualization::PCLVisualizer& viewer) { viewer.setBackgroundColor(0.5, 0.9, 0.5); //设置背景颜色 } int main() { pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); char strfilepath[256] = "L://VS2//xiangmu//pcl//rabbit.pcd"; pcl::io::loadPCDFile(strfilepath, *cloud); pcl::visualization::CloudViewer viewer("Cloud Viewer"); //创建viewer对象 viewer.showCloud(cloud); viewer.runOnVisualizationThreadOnce(viewerOneOff); viewer->close(); system("pause"); return 0; }把它优化成在vs2022和pcl1.13.0的运行代码
以下是优化后的代码,可在VS2022和PCL 1.13.0中运行:
```
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/cloud_viewer.h>
void viewerOneOff(pcl::visualization::PCLVisualizer& viewer)
{
viewer.setBackgroundColor(0.5, 0.9, 0.5); //设置背景颜色
}
int main()
{
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
const char* strfilepath = "L://VS2//xiangmu//pcl//rabbit.pcd";
pcl::io::loadPCDFile(strfilepath, *cloud);
pcl::visualization::CloudViewer::Ptr viewer(new pcl::visualization::CloudViewer("Cloud Viewer")); //创建viewer对象
viewer->showCloud(cloud);
viewer->runOnVisualizationThreadOnce(viewerOneOff);
while (!viewer->wasStopped())
{
viewer->spinOnce();
}
return 0;
}
```
该代码的改动主要是:
1. 将字符数组类型的文件路径改为字符串常量类型;
2. 将创建PCL可视化对象的方式改为使用智能指针;
3. 将关闭可视化窗口的代码改为在while循环中监听可视化窗口是否被关闭。
阅读全文