PCL读取PCD文件的数据
1.pcd文件——rabbit.pcd 链接:https://pan.baidu.com/s/1v6mjPjwd7fIqUSjlIGTIGQ 新建项目pcl rabbit.pcd 和pcl.cpp在同一目录下 ? 2.读取文件 (1)显示数据 #include<iostream> #include<pcl/io/pcd_io.h> #include<pcl/point_types.h> int main(int argc,char** argv) { 文件里的数据就一次显示出来了 说明: PointCloud是PCL中的一个基类,pcl::PointCloud<pcl::PointXYZ>::Ptr是一个Boost共享指针 PointCloud中的数据域 width(int),如果是无组织,无结构的点云数据,表示点云的个数;如果是有结构的点云数据,表示点云数据集一行的点数。 height(int),如果是无结构的点云数据,height=1;如果是有结构的点云数据,height表示点云总行数。 points(std::vector)存储了数据类型为PointT的一个动态数组。 PointXYZ 是最常见的一个点数据类型,它只包含三维X,Y,Z坐标信息 X:points[i].x size_t 整型,保存一个整数,记录一个大小(size) points.size() 表示点云数据大小 ?(2)数据可视化 #include<iostream> #include<pcl/io/pcd_io.h> #include<pcl/point_types.h> #include <pcl/visualization/cloud_viewer.h> int main(int argc,char** argv) { pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); // //*打开点云文件 if (pcl::io::loadPCDFile<pcl::PointXYZ>("rabbit.pcd",*cloud) == -1) { PCL_ERROR("Couldn‘t read file rabbit.pcdn"); return(-1); } std::cout << cloud->points.size() << std::endl; pcl::visualization::CloudViewer viewer("cloud viewer"); viewer.showCloud(cloud); while (!viewer.wasStopped()) { } system("pause"); return 0; } 运行结果 ?转一下滚轮 ?修改背景色 #include<iostream> #include<pcl/io/pcd_io.h> #include<pcl/point_types.h> #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>); //*打开点云文件 if (pcl::io::loadPCDFile<pcl::PointXYZ>("rabbit.pcd",*cloud) == -1) { PCL_ERROR("Couldn‘t read file rabbit.pcdn"); return(-1); } std::cout << cloud->points.size() << std::endl; pcl::visualization::CloudViewer viewer("cloud viewer"); viewer.showCloud(cloud); viewer.runOnVisualizationThreadOnce(viewerOneOff); system("pause"); return 0; } ?输出文字 #include<iostream> #include<pcl/io/pcd_io.h> #include<pcl/point_types.h> #include <pcl/visualization/cloud_viewer.h> int user_data; void viewerOneOff(pcl::visualization::PCLVisualizer& viewer) { viewer.setBackgroundColor(1.0f,1.0f); } void viewerPsycho(pcl::visualization::PCLVisualizer& viewer) { static unsigned count = 0; std::stringstream ss; ss << "Once per viewer loop: " << count++; viewer.removeShape("text",0); viewer.addText(ss.str(),20,100,"text",0);//this is to set the coordination of text "Once per viewer loop:" user_data++; } int main(int argc,*cloud) == -1) { PCL_ERROR("Couldn‘t read file rabbit.pcdn"); return(-1); } std::cout << cloud->points.size() << std::endl; pcl::visualization::CloudViewer viewer("cloud viewer"); viewer.showCloud(cloud); viewer.runOnVisualizationThreadOnce(viewerOneOff); viewer.runOnVisualizationThread(viewerPsycho); system("pause"); return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |