先贴代码:
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/pcl_visualizer.h>
int main()
{
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::io::loadPCDFile("bunny.pcd", *cloud);
pcl::visualization::PCLVisualizer viewer("viewer");
viewer.addPointCloud(cloud, "cloud");
while (true)
{
for (int i = 0; i < cloud->size(); i++)
{
cloud->points[i].x -= 0.001;
}
viewer.updatePointCloud(cloud, "cloud");
viewer.spinOnce(0.001);
Sleep(1); //延时函数,不加的话刷新太快会看不到显示效果
}
return 0;
}
其中15-17行可以换成其他对点云的操作,这里是对点云进行沿x方向的平移。在while循环之前定义viewer,并通过addPointCloud方法添加点云;在循环中对点云进行操作,然后调用updatePointCloud刷新点云,调用spinOnce重新渲染输出,并调用延时函数防止刷新太快看不到显示效果。
最终动态效果如下: