目的
将一片点云进行可视化。
代码
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/filters/conditional_removal.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/visualization/pcl_visualizer.h>
using namespace std;
typedef pcl::PointXYZRGBA PointType;
int main() {
pcl::PCDReader reader;
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); // 要显示的点云
boost::shared_ptr<pcl::visualization::PCLVisualizer> m_viewer; //窗口
//读取文件
reader.read("D:/ground_1.pcd", *cloud);
//显示窗口初始化
m_viewer.reset(new pcl::visualization::PCLVisualizer("viewer", false));
m_viewer->setBackgroundColor(0, 0, 0);//设置背景颜色
m_viewer->initCameraParameters();
m_viewer->addCoordinateSystem();//添加红绿蓝坐标轴
m_viewer->createInteractor();
while (!m_viewer->wasStopped()) {
m_viewer->spinOnce(1);
if (!m_viewer->updatePointCloud(cloud->makeShared(), "cloud")) {//pointCloud_XYZRGBA是指针类型,不能用( . )运算符
m_viewer->addPointCloud(cloud->makeShared(), "cloud");
}
}
system("pause");
return 0;
}
结果(原点云,未进行下采样)
注意问题
当点云中点的数量很多时,需要时间比较长。可以先对点云进行下采样,然后再进行显示。