基于VS2022和PCL1.14版本
读取PCD文件
读取点云:(通过设置点云路径->新建空白指针->保存点云到指针->return 0)
#include <iostream>
#include <string>
#include <pcl/point_types.h>
#include <pcl/io/pcd_io.h>
int main(int argc, char** argv) {
std::string pathA = "D:\\path1\\path2\\ALS\\ALS.pcd";//这里是路径
std::string pathB = "D:\\path1\\path2\\ALS\\BLS.pcd";//这里是路径
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud1(new pcl::PointCloud<pcl::PointXYZ>);//开辟一个空白指针空间,作用是保存数据文件,名字叫cloud1
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud2(new pcl::PointCloud<pcl::PointXYZ>);//开辟一个空白指针空间,作用是保存数据文件,名字叫cloud2
if (pcl::io::loadPCDFile<pcl::PointXYZ>(pathA, *cloud1) == -1 || pcl::io::loadPCDFile<pcl::PointXYZ>(pathB, *cloud2) == -1) {
PCL_ERROR("Couldn't read the PCD files \n");
return -1;
}
std::cout<<" Successfully get a point cloud ";
//将pathA和pathB文件路径文件保存到空白指针空间cloud1和cloud2中
//到这里读取数据成功了,并且保存到指针cloud1和cloud2中,后续调用指针就可以完成点云其他处理操作。
return 0;
}
保存点云:
(通过设置点云路径->新建空白指针->保存点云到指针->设置长宽密度信息->设置保存路径->return 0)
注意,pcl1.14版本将处理后的点云保存的时候需要设置一下长、宽、密度信息,否则会保存失败
也算是完整代码了,包括了点云加载和点云保存
#include <iostream>
#include <string>
#include <pcl/point_types.h>
#include <pcl/io/pcd_io.h>
int main(int argc, char** argv) {
std::string pathA = "D:\\path1\\path2\\ALS\\ALS.pcd";//这里是路径
std::string pathB = "D:\\path1\\path2\\ALS\\BLS.pcd";//这里是路径
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud1(new pcl::PointCloud<pcl::PointXYZ>);//开辟一个空白指针空间,作用是保存数据文件,名字叫cloud1
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud2(new pcl::PointCloud<pcl::PointXYZ>);//开辟一个空白指针空间,作用是保存数据文件,名字叫cloud2
if (pcl::io::loadPCDFile<pcl::PointXYZ>(pathA, *cloud1) == -1 || pcl::io::loadPCDFile<pcl::PointXYZ>(pathB, *cloud2) == -1) {
PCL_ERROR("Couldn't read the PCD files \n");
return -1;
}
std::cout<<" Successfully get a point cloud ";
//将pathA和pathB文件路径文件保存到空白指针空间cloud1和cloud2中
//到这里读取数据成功了,并且保存到指针cloud1和cloud2中,后续调用指针就可以完成点云其他处理操作。
cloud1->width = cloud1->points.size();//PCL1.14点云处理完成之后来设置一下的三个信息
cloud1->height = 1;
cloud1->is_dense = true;
cloud2->width = cloud2->points.size();//PCL1.14点云处理完成之后来设置一下的三个信息
cloud2->height = 1;
cloud2->is_dense = true;
pcl::io::savePCDFileASCII("D:\\path1\\path2\\ALS-FF.pcd", *cloud1);
// ( 保存路径设置,被保存的指针)
pcl::io::savePCDFileASCII("D:\\path1\\path2\\ALS-FF.pcd", *cloud2);
return 0;
}