PCL两种方式的点云读写

首先第一种读取方式使用reader


#include <pcl/point_types.h>//PCL对各种格式的点的支持头文件
#include <pcl/io/pcd_io.h>//PCL的PCD格式文件的输入输出头文件
#include <pcl/kdtree/kdtree_flann.h>
typedef pcl::PointXYZI PointT;
int
main (int argc, char** argv)
{
pcl::PointCloud<pcl::PointXYZI>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZI>);	// Generate pointcloud data,新建指针cloud存放点云	
pcl::PCDReader reader;	
reader.read<pcl::PointXYZI>("1.pcd", *cloud);//读取1.pcd文件,用指针传递给cloud。
std::cout << "Loaded "
            << cloud->width * cloud->height
            << " data points from test_pcd.pcd with the following fields: "
            << std::endl;
  for (std::size_t i = 0; i < cloud->points.size (); ++i)
  {
    std::cout << "    " << cloud->points[i].x
              << " "    << cloud->points[i].y
              << " "    << cloud->points[i].z << std::endl;
  }

  return (0);
}

第二种使用loadPCDFile

#include <pcl/point_types.h>//PCL对各种格式的点的支持头文件
#include <pcl/io/pcd_io.h>//PCL的PCD格式文件的输入输出头文件
#include <pcl/kdtree/kdtree_flann.h>
typedef pcl::PointXYZI PointT;
pcl::PointCloud<pcl::PointXYZI>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZI>);	// Generate pointcloud data,新建指针cloud存放点云	
if (pcl::io::loadPCDFile<pcl::PointXYZI>("1.pcd", *cloud) == -1)//*打开点云文件。
{
     PCL_ERROR("Couldn't read that pcd file\n");
     return(-1);//如果没找到该文件,返回-1,跳出整个main函数
}

//写入方法一:
pcl::PCDWriter writer;
writer.write<pcl::PointXYZI>("name_cluster.pcd", *INcloud, false);//将点云保存到PCD文件中
//写入方法二:
pcl::io::savePCDFileASCII("name_cluster.pcd", *INcloud); //将点云保存到PCD文件中
发布了28 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/m0_37957160/article/details/103822168
今日推荐