pcl读取PCD文件及其可视化——纯小白开练

什么是pcd文件?

         PCD文件是“Point Cloud Data”(点云数据)的缩写,是一种用于存储三维点云数据的文件格式。点云是通过激光雷达(LiDAR)、结构光、立体相机等设备获取的三维空间中的一组点,这些点通常由X、Y、Z坐标表示,描述了物体或场景的表面几何形状。

         PCD文件的格式由开源项目PCL(Point Cloud Library)定义,是处理点云数据的标准格式之一。PCD文件可以包含不仅仅是XYZ坐标的点数据,还可以包括颜色信息、法线、强度等额外属性。

点云与PCD文件的关系?

        点云是数据的概念,而PCD文件是一种具体的存储格式。换句话说,PCD文件是用于存储和表示点云数据的一种文件形式。

使用PCL库读取和可视化PCD文件的C++代码示例:

代码已经测试好,可以直接使用哦!!!

#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/point_types.h>
#include <string>

// 定义一个函数用于读取并可视化PCD文件
void visualizePCDFile(const std::string& filename)
{
    // 创建一个点云对象
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);

    // 读取PCD文件
    if (pcl::io::loadPCDFile<pcl::PointXYZ>(filename, *cloud) == -1)
    {
        PCL_ERROR("Couldn't read the PCD file \n");
        return;
    }

    std::cout << "Loaded " << cloud->width * cloud->height << " data points from " << filename << std::endl;

    // 创建PCL可视化器
    pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("3D Viewer"));
    viewer->setBackgroundColor(0, 0, 0);

    // 将点云添加到可视化器
    pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> color_handler(cloud, 255, 255, 255); // 使用白色显示点云
    viewer->addPointCloud<pcl::PointXYZ>(cloud, color_handler, "cloud");

    // 设置点云显示属性
    viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "cloud");
    viewer->addCoordinateSystem(1.0);
    viewer->initCameraParameters();

    // 开始主循环
    while (!viewer->wasStopped())
    {
        viewer->spinOnce(100);
    }
}

读取点云数据

通过pcl::io::loadPCDFile函数从PCD文件中加载点云数据。

可视化器设置

使用pcl::visualization::PCLVisualizer创建一个3D可视化窗口,并将点云数据添加到可视化器中。

主循环

使用viewer->spinOnce(100)保持可视化器窗口打开并更新显示,直到窗口被关闭。

main函数调用上面写好的visualizePCDFile函数来读取和可视化任何PCD文件。

int main(int argc, char** argv) 
{ 
    // 调用函数来读取和可视化PCD文件                                 
    visualizePCDFile("your_file.pcd"); // 请将"your_file.pcd"替换为你的PCD文件路径

return 0;

}

若有其他PCD文件,只需在main函数中传入相应的文件路径即可。

结果展示:

modelnt40数据集为例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值