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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章