PCL应用技术

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

2020-03-23  本文已影响0人  AI秘籍

程序

// 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
上一篇下一篇

猜你喜欢

热点阅读