注意添加头文件:
#include <pcl/visualization/pcl_visualizer.h>
一:单独以某个颜色显示一个点云
cloud1为要显示的点云,color_val显示点云配色,1红色2绿色3蓝色
void viewerPointcloud(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud1, int color_val)
{
boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer("Viewer"));
if (color_val == 1)
{
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> color(cloud1, 255, 0, 0);
viewer->addPointCloud<pcl::PointXYZ>(cloud1, color, "sample cloud");
}
else if (color_val == 2)
{
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> color(cloud1, 0, 255, 0);
viewer->addPointCloud<pcl::PointXYZ>(cloud1, color, "sample cloud");
}
else if (color_val == 3)
{
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> color(cloud1, 0, 0, 255);
viewer->addPointCloud<pcl::PointXYZ>(cloud1, color, "sample cloud");
}
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "sample cloud");
viewer->addCoordinateSystem(1.0);
viewer->initCameraParameters();
while (!viewer->wasStopped())
{
viewer->spinOnce(100);
boost::this_thread::sleep(boost::posix_time::microseconds(100000));
}
}
用例:
pcl::PointCloud<pcl::PointXYZ>::Ptr SCloud(new pcl::PointCloud<pcl::PointXYZ>); // 源点云
pcl::io::loadPCDFile("/home/xxx/xx/data/xx/xx.pcd", *SCloud);
viewerPointcloud(SCloud, 1);
显示界面按q退出
二、一个窗口同时显示两个点云(颜色区分)
void viewPair(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud1, pcl::PointCloud<pcl::PointXYZ>::Ptr cloud2)
{
pcl::visualization::PCLVisualizer viewer("Viewer");
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> cloud1_color(cloud1, 0, 255, 0);
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> cloud2_color(cloud2, 255, 0, 0);
viewer.setBackgroundColor(255, 255, 255);
viewer.addPointCloud(cloud1, cloud1_color, "cloud1");
viewer.addPointCloud(cloud2, cloud2_color, "cloud2");
while (!viewer.wasStopped())
{
viewer.spinOnce(100);
boost::this_thread::sleep(boost::posix_time::microseconds(1000));
}
}