一个结果图中显示多个点云文件
在一个效果图中显示三个点云
代码
#define BOOST_TYPEOF_EMULATION
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/registration/icp.h>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/registration/icp.h>//icp头文件
#include <pcl/visualization/pcl_visualizer.h>
using namespace std;
typedef pcl::PointXYZ PointT;
typedef pcl::PointCloud<PointT> PointCloud;
void visualize_pcd(PointCloud::Ptr cloud_1, PointCloud::Ptr cloud_2, PointCloud::Ptr cloud_3)
{
pcl::visualization::PCLVisualizer viewer(" Viewer");
//cloud_1点云绿色
pcl::visualization::PointCloudColorHandlerCustom<PointT> cloud_green(cloud_1, 0, 255, 0);
//cloud_2点云红色
pcl::visualization::PointCloudColorHandlerCustom<PointT> cloud_red(cloud_2, 255, 0, 0);
//cloud_3点云蓝色
pcl::visualization::PointCloudColorHandlerCustom<PointT> cloud_blue(cloud_3, 0, 0, 255);
viewer.setBackgroundColor(255, 255, 255);
viewer.addPointCloud(cloud_1, cloud_green, "cloud_1");
viewer.addPointCloud(cloud_2, cloud_red, "cloud_2");
viewer.addPointCloud(cloud_3, cloud_blue, "cloud_3");
while (!viewer.wasStopped())
{
viewer.spinOnce(100);
boost::this_thread::sleep(boost::posix_time::microseconds(100000));
}
}
int main(int argc, char** argv)
{
pcl::PointCloud<PointT>::Ptr cloud_1(new pcl::PointCloud<PointT>);
pcl::PointCloud<PointT>::Ptr cloud_2(new pcl::PointCloud<PointT>);
pcl::PointCloud<PointT>::Ptr cloud_3(new pcl::PointCloud<PointT>);
pcl::io::loadPCDFile("D:\\数据集\\Armadillo_scans\\Armadillo_scans_pcd\\ArmadilloBack_0.pcd", *cloud_1);
pcl::io::loadPCDFile("D:\\数据集\\bunnyply\\data3.pcd", *cloud_2);
pcl::io::loadPCDFile("D:\\数据集\\dragon_stand\\dragon_stand\\dragonStandRight_0.pcd", *cloud_3);
visualize_pcd(cloud_1, cloud_2, cloud_3);
return (0);
}