pcl中窗口点云可视化的几种情况

本文详细介绍PCL(point cloud library)中visualization模块的使用方法,包括单一点云、多点云在同一视窗及多视窗的展示技巧。通过具体代码示例,读者可快速掌握如何设置点云颜色、大小及背景等参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         pcl中visualization模块中常用于点云可视化的两个class:

1.class pcl::visualization::Cloudviewer(功能简单)
2.class pcl::visualization::PCLVisualizer(成员函数非常多,内容很丰富,为点云可视化中最重要的class)
点云可视化的情况可分为以下情况:
情况1.简单地显示单一点云

代码如下

 pcl::CloudPoint<pcl::PointXYZ>::Ptr cloud(new pcl::CloudPoint<pcl::PointXYZ>);
 pcl::visualization::CloudViewer viewer("simple cloud viewer.");
 viewer.showCloud(cloud);
 while(!viewer.wasStopped())
 {
 }
 

效果图
在这里插入图片描述
情况2.一个视口显示多个点云
代码如下:(我这里是利用parametric model 进行投影,具体参见pcl官网filters模块)

 boost::shared_ptr< pcl::visualization::PCLVisualizer > viewer(new pcl::visualization::PCLVisualizer("project points using  aparameyric model")); 
 viewer->setBackgroundColor(0, 0, 0); //创建窗口 
 int v1; 
 viewer->createViewPort(0.0, 0.0, 1.0, 1.0, v1); 
 //设置点云颜色 
 pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> source_color(cloud, 34, 25, 133); //投影前可以随便设一个颜色
 pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> target_color(cloud_projected, 255, 255, 255);  //投影后的设置为白色
 viewer->addPointCloud<pcl::PointXYZ>(cloud, source_color, "source", v1); 
 viewer->addPointCloud<pcl::PointXYZ>(cloud_projected, target_color, "projected", v1);  
 viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 2, "source"); 
 viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 2, "projected"); 
 viewer->spin();
 

效果图

在这里插入图片描述
情况3:多视口显示

//5双视窗口
 boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer("filter Viewer"));
 viewer->initCameraParameters();
 int v1(0), v2(0);//视口编号在这里设置两个视口
 //5.1原始点云窗口
 viewer->createViewPort(0.0, 0.0, 0.5, 1.0, v1);
 viewer->setBackgroundColor(0, 0, 0, v1);
 viewer->addText("original", 10, 10, "v1 text", v1);
 viewer->addPointCloud<pcl::PointXYZ>(cloud, "sample cloud1", v1);
 viewer->addCoordinateSystem(1.0);
 viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 2, "sample cloud1");
 //5.2滤波窗口
 viewer->createViewPort(0.5, 0.0, 1.0, 1.0, v2);
 viewer->setBackgroundColor(0, 0, 0, v2);
 viewer->addText("after filtered", 10, 10, "v2 text", v2);
 viewer->addPointCloud<pcl::PointXYZ>(cloud_filter, "sample cloud2", v2);
 viewer->addCoordinateSystem(1.0);
 viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 2, "sample cloud2");
 while (!viewer->wasStopped())
 {
  viewer->spinOnce(100);  //刷新
  boost::this_thread::sleep(boost::posix_time::microseconds(100000));
 }

效果图
在这里插入图片描述
这里有更详细的介绍https://segmentfault.com/a/1190000006685118

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值