一、使用PCL库读取和保存PCD文件

基于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;
    }

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值