美文网首页PCL应用技术
PCL:从pcd文件中读取点云数据并显示

PCL:从pcd文件中读取点云数据并显示

作者: AI秘籍 | 来源:发表于2020-03-23 22:45 被阅读0次

    程序

    // PCL点云数据的读取和显示
    #include <iostream> //标准输入输出流
    #include <pcl/io/pcd_io.h> //PCL的PCD格式文件的输入输出头文件
    #include <pcl/point_types.h> //PCL对各种格式的点的支持头文件
    #include <pcl/visualization/cloud_viewer.h>
     
    // 更改背景颜色
    void viewerOneOff(pcl::visualization::PCLVisualizer& viewer) 
    {
        viewer.setBackgroundColor(1.0f, 0.5f, 1.0f);
    }
    
    int main(int argc, char** argv)
    {
      // 创建点云(指针)
        pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); 
    
      // 读入PCD格式的文件,如果文件不存在,返回-1 
        if (pcl::io::loadPCDFile<pcl::PointXYZ>("/home/xx/下载/rabbit.pcd", *cloud) == -1) 
        {
            PCL_ERROR("Couldn't read file test_pcd.pcd \n"); //文件不存在时,返回错误,终止程序。
            return (-1);
        }
    
      std::cout << "cloud points size= " << cloud->points.size() << std::endl;
      std::cout << "Loaded:" << cloud->width*cloud->height
                << "data points from test_pcd.pcd with the following fields:"
                << std::endl;
      for (size_t i = 0; i < cloud->points.size(); ++i) 
      {
        std::cout << "x= " << cloud->points[i].x 
                  << "y= " << cloud->points[i].y 
                  << "z= " << cloud->points[i].z 
                  << "; " << std::endl;
      }
    
      
      pcl::visualization::CloudViewer viewer("cloud viewer");
      viewer.showCloud(cloud);
    
      // 更改背景颜色
      viewer.runOnVisualizationThreadOnce(viewerOneOff);
      // 保证不闪退
      while (!viewer.wasStopped()) 
      {
    
      }
        
    
        system("pause");
        return (0);
    }
    
    image.png

    按R键


    image.png

    参考:

    1. https://www.cnblogs.com/baby123/p/10950907.html
    2. https://blog.csdn.net/Mr_zhuzj/article/details/81272209

    相关文章

      网友评论

        本文标题:PCL:从pcd文件中读取点云数据并显示

        本文链接:https://www.haomeiwen.com/subject/twogyhtx.html