1.读取点云数据
/*依赖库文件*/#include <pcl/io/pcd_io.h>/*创建点云变量*/pcl::PointCloud<pcl::PointXYZ> PointCloud;PointCloud::Ptr cloud_in(new PointCloud);/*文件路径*/std::string filename = "***/***/***.pcd";/*读取文件*/if(pcl::io::loadPCDFile<pcl::PointXYZ>(filename, *cloud_in)){std::cout << "load pcd file fail!" << std::endl;return -1;}
2.保存点云数据
/*依赖库文件*/#include <pcl/io/pcd_io.h>/*待存储点云数据*/pcl::PointCloud<pcl::PointXYZ> PointCloud;pcl::PointCloud::Ptr cloud_out(new PointCloud);/*目标存储文件*/std::string pcd_file = "***/***/***.pcd";std::string bin_file = "***/***/***.bin";/*保存点云数据*//*wauy 1*/pcl::PCDWriter writer;writer.write(pcd_file, *cloud_out);/*way 2*/pcl::io::savePCDFileBinary(bin_file, *cloud_out);pcl::io::savePCDFileASCII(pcd_file, *cloud_out);
3.显示点云数据
boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer("cloud show"));int v1 = 0;viewer->createViewPort(0, 0, 1.0, 1.0, v1);/*创建查看窗口*/viewer->setBackgroundColor(255,255, 255, v1);/*窗口背景颜色设置*/viewer->setBackgroundColor(255,255, 255);pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> raw(cloud, 0, 0, 0);/*设置点云对应颜色*/viewer->addPointCloud(cloud, raw, "source cloud", v1);/*设置好的点云加入窗口*/while (!viewer->wasStopped()){viewer->spinOnce(100);boost::this_thread::sleep(boost::posix_time::microseconds(10000));}system("pause");return 0;
4.寻找坐标极值
pcl::PointXYZ minPt, maxPt;pcl::getMinMax3D(*cloud, minPt, maxPt);