【PCL学习】.PCD文件点云可视化

本文介绍了如何使用PCL库读取并可视化conferenceRoom.pcd文件中的PointXYZRGB类型的点云数据,展示了从初始化Visualizer到加载和显示点云的完整过程。
摘要由CSDN通过智能技术生成

conferenceRoom.pcd文件如下:截取了部分点,点格式为PointXYZRGB类型

可视化代码如下:
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/cloud_viewer.h>

int main(int argc, char const *argv[])
{
    // 1、Visualizer初始化 
	//创建可视化对象
	pcl::visualization::PCLVisualizer viewer("PointCloud Viewer");
	// 设置背景颜色(0,0,0)黑色  (255,255,255)白色
	viewer.setBackgroundColor(0,0,0);
	//添加坐标轴(红绿蓝三色轴,放置在原点)
	viewer.addCoordinateSystem(3.0,-20.8,36.2,0);  //3.0指轴的长度
	//viewer.addCoordinateSystem(3.0,1,2,3);一个重载函数,3.0指轴的长度,放置在(1,2,3)位置
	//初始化默认相机参数
	viewer.initCameraParameters();

	// 2、读取pcd文件
	//创建点云渲染对象,导入待渲染文件
	pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud2(new pcl::PointCloud<pcl::PointXYZRGB>);  //声明cloud
	if(pcl::io::loadPCDFile("conferenceRoom.pcd",*cloud2) == -1){
        PCL_ERROR("Couldn't read file.\n");
        return (-1);
    }

	// 设置点云颜色
    pcl::visualization::PointCloudColorHandlerRGBField<pcl::PointXYZRGB> rgb(cloud2);
	viewer.addPointCloud<pcl::PointXYZRGB>(cloud2, rgb, "cloud2conferenceRoom");
   
   	//显示可视化窗口
    while (!viewer.wasStopped())
    {
        viewer.spinOnce();
    }


    return 0;

}

 效果如下:

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
PCL 中,可以使用 `pcl::PointCloud` 类来表示点云数据,并使用 `pcl::visualization::PCLVisualizer` 类将点云可视化。如果使用 `PCLVisualizer.addPointCloud()` 方法添加点云,那么该方法会将点云对象的指针存储在可视化对象内部,因此可以通过点云的 ID 获取点云对象的指针。 要降低内存占用,可以对点云对象调用 `reset()` 方法,释放点云数据占用的内存。但是需要注意的是,如果在可视化中使用了该点云对象,那么在释放内存之前必须从可视化中移除该点云,否则会导致程序崩溃。 以下是一个示例代码,演示如何添加点云、获取点云对象指针、移除点云、释放内存: ```c++ #include <pcl/point_cloud.h> #include <pcl/visualization/pcl_visualizer.h> int main() { // 创建点云对象 pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGB>); // 从文件读取点云数据 pcl::io::loadPCDFile("cloud.pcd", *cloud); // 创建 PCLVisualizer 对象 pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("Viewer")); // 添加点云可视化对象中 int cloud_id = 0; viewer->addPointCloud(cloud, "cloud" + std::to_string(cloud_id)); // 获取点云对象指针 pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud_ptr = viewer->getPointCloud<pcl::PointXYZRGB>("cloud" + std::to_string(cloud_id)); // 移除点云 viewer->removePointCloud("cloud" + std::to_string(cloud_id)); // 释放点云对象内存 cloud_ptr->reset(); return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值