可视化一个点云input_cloud代码
pcl::PointCloud<PointT>::Ptr input_cloud(new pcl::PointCloud<PointT>);
pcl::visualization::PCLVisualizer viewer("cloud boundary");
viewer.initCameraParameters();
viewer.setBackgroundColor(0.02, 0.23, 0.34);
viewer.setSize(800, 600);
pcl::visualization::PointCloudColorHandlerGenericField<PointT> fildColor(cloud_boundary, "z");
viewer.addPointCloud<PointT>(input_cloud, fildColor, "Visual model");
viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "Visual model");
while (!viewer.wasStopped())
{
viewer.spin();
}
pcl::io::savePCDFileASCII("cloud_boundary.pcd", *input_cloud);
PCL可以使用PCLVisualizer的saveScreenshot()方法来保存Viewer中的所有内容。这个方法可以将Viewer中的图像保存为PNG、JPEG、BMP等格式的图片文件。示例代码:
// 创建PCLVisualizer对象
pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("Viewer"));
// 加载点云数据
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::io::loadPCDFile<pcl::PointXYZ>("cloud.pcd", *cloud);
// 将点云添加到Viewer中
viewer->addPointCloud(cloud, "cloud");
// 设置Viewer参数
viewer->setBackgroundColor(0, 0, 0);
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "cloud");
// 保存Viewer中的内容
viewer->saveScreenshot("viewer.png");
// 显示Viewer
while (!viewer->wasStopped())
{
viewer->spinOnce();
}
上述代码创建了一个PCLVisualizer对象,加载了一个点云,并将其添加到Viewer中。然后设置了Viewer的背景色和点云渲染属性。最后,调用saveScreenshot()方法将Viewer中的内容保存为一张PNG图片。
viewer.initCameraParameters()
viewer.initCameraParameters()是PCL可视化库中的一个函数,用于初始化可视化窗口中相机的参数,包括相机位置、视角、裁剪范围等。具体来说,viewer.initCameraParameters()函数会将相机位置设置为(0, 0, 0),视角设置为(0, -1, 0),裁剪范围设置为默认值(0.1, 10000.0)。
在使用PCL可视化库时,通常需要先调用viewer.initCameraParameters()函数来初始化相机参数,然后再设置相机的位置、视角和裁剪范围等参数。这样可以保证相机的初始参数符合我们的预期,并且避免一些意外的显示问题。
需要注意的是,viewer.initCameraParameters()函数只能在添加点云数据之前调用,否则可能会导致相机参数被覆盖,从而影响显示效果。因此,一般情况下,我们会在创建可视化对象后立即调用viewer.initCameraParameters()函数。