1. PCD文件加载
#第一种
pcl::PCDReader reader;
reader.read<pcl::PointXYZ> ("pcdFileName.pcd", *cloud);
#第二种
pcl::io::loadPCDFile("pcdFileName.pcd", *cloud);
#二进制适合用于传输存取
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
pcl::PCLPointCloud2 cloud_blob;
pcl::io::loadPCDFile ("bun0.pcd", cloud_blob);
pcl::fromPCLPointCloud2 (cloud_blob, *cloud);
2.点云可视化viewer
#第一种
pcl::visualization::PCLVisualizer viewer("PCL Viewer");
viewer.setBackgroundColor(0.0,0.0,0.5);
viewer.addPointCloudNormals<pcl::PointXYZ, pcl::Normal>(cloud,normals);
while(!viewer.wasStopped())
{
viewer.spinOnce();
}
#第二种
void showPointCloud(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud, const std::string& tileName)
{
pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer);
viewer->setBackgroundColor(0,0,0);
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> color_handler(cloud,255,255,255);
viewer->addPointCloud<pcl::PointXYZ> (cloud,color_handler,"sample cloud");
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 2, "sample cloud");
viewer->addCoordinateSystem(1.0);
viewer->initCameraParameters();
while(!viewer->wasStopped())
{
viewer->spinOnce(100);
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
}
#第三种
pcl::visualization::PCLPlotter plotter;
plotter.addFeatureHistogram(*pfh_fe_ptr, 300); //设置的很坐标长度,该值越大,则显示的越细致
plotter.plot();
3.点云处理
#把PointXYT 和 Normal数据合并在一起
pcl::PointCloud<pcl::PointNormal>::Ptr cloud_with_normals (new pcl::PointCloud<pcl::PointNormal>);
pcl::concatenateFields (*cloud, *normals, *cloud_with_normals);