PCL读写pcd文件并显示点云

写这个博客作为学习的记录

代码

#include <iostream>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <vector>
using namespace std;



int main()
{

    pcl::visualization::CloudViewer viewer("Cloud Viewer");
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>());

    if (pcl::io::loadPCDFile<pcl::PointXYZ> ("rabbit_gra.pcd", *cloud) == -1){
        PCL_ERROR("couldn't read file");
        return 0;
    }

    std::cout << "Loaded "
                << cloud->width * cloud->height
                << " data points from test_file.pcd with the following fields: "
                << std::endl;
      //for (size_t i = 0; i < cloud->points.size (); ++i) //显示所有的点
        for (size_t i = 0; i < 5; ++i) // 为了方便观察,只显示前5个点
        std::cout << "    " << cloud->points[i].x
                  << " "    << cloud->points[i].y
                  << " "    << cloud->points[i].z << std::endl;


    viewer.showCloud(cloud);

    while(!viewer.wasStopped());

    return 0;
}

运行结果:

需要的pcd文件可以在这里下载:https://download.csdn.net/download/tjm059/10786541?utm_source=bbsseo

积分少的朋友可以留言我私发给你

写入文件代码

#include <iostream>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <vector>
using namespace std;




int main()
{

    pcl::visualization::CloudViewer viewer("Cloud Viewer");
    pcl::PointCloud<pcl::PointXYZ> cloud;

    //填充点云数据
      cloud.width    = 5; //设置点云宽度
      cloud.height   = 1; //设置点云高度
      cloud.is_dense = false; //非密集型
      cloud.points.resize (cloud.width * cloud.height); //变形,无序
        //设置这些点的坐标
      for (size_t i = 0; i < cloud.points.size (); ++i)
      {
        cloud.points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);
        cloud.points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);
        cloud.points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);
      }
        //保存到PCD文件
      pcl::io::savePCDFileASCII ("test_pcd.pcd", cloud); //将点云保存到PCD文件中
      std::cerr << "Saved " << cloud.points.size () << " data points to test_pcd.pcd." << std::endl;
        //显示点云数据
      for (size_t i = 0; i < cloud.points.size (); ++i)
        std::cerr << "    " << cloud.points[i].x << " " << cloud.points[i].y << " " << cloud.points[i].z << std::endl;



    return 0;
}
发布了54 篇原创文章 · 获赞 80 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41685265/article/details/104452453