近期需要将三维点云图实时显示出来,关于点云库,有PCL和opengl。pcl在处理点云的算法上有优势,opengl做点云的显示与渲染有优势。
由于点云处理操作较多,所以就选择了PCL的库来处理。
PCL中点云的显示主要有两个类:1. pcl::visualization::CloudViewer; 2. pcl::visualization::PCLVisualizer。
前面一个类主要做简单的点云显示,后面一个有更加丰富的设置接口。下面简单的介绍两种
- pcl::visualization::CloudViewer(这里偷懒直接把官方的示例拖过来,网址:http://www.pointclouds.org/documentation/tutorials/cloud_viewer.php#cloud-viewer)
- 下面是最简单的显示,其中PointXYZRGB可以替换为PointXYZ, PointXYZRGBA等多种点云的格式。
#include <pcl/visualization/cloud_viewer.h>
//...
void
foo ()
{
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud;
//... populate cloud
pcl::visualization::CloudViewer viewer ("Simple Cloud Viewer");
viewer.showCloud (cloud);
while (!viewer.wasStopped ())
{
}
//...
void
foo ()
{
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud;
//... populate cloud
pcl::visualization::CloudViewer viewer ("Simple Cloud Viewer");
viewer.showCloud (cloud);
while (!viewer.wasStopped ())
{
}
}
- 如果想要在一个单独的线程中跑,可以看下面这个例子
#include <pcl/visualization/cloud_viewer.h>#include <iostream>#include <pcl/io/io.h>#include <pcl/io/pcd_io.h>
int user_data;
int user_data;