您的位置:首页 > 其它

pcl小知识(十三)——两种读取和写入pcd点云文件的方法(根目录与指定目录)

2018-06-22 09:35 5560 查看
版权声明:本文为博主原创文章,转载请注明出处。谢谢! https://blog.csdn.net/liukunrs/article/details/80769145

介绍了两种读取和保存到pcd格式点云的方法;同时介绍了读取根目录下与指定目录下的方法。

读取

一、读取根目录下点云

点云放在整个C++工程中存放.cpp的那个文件夹【当然,你的.cpp需要是在默认路径下新建的,或者添加的是打开的默认目录下的】。

1、使用reader

[code]	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);	// Generate pointcloud data,新建指针cloud存放点云
pcl::PCDReader reader;
reader.read<pcl::PointXYZ>("jiange0.05liqun_100inliers4.pcd", *cloud);//读取pcd文件,用指针传递给cloud。

2、使用loadPCDFile

[code]	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);	// Generate pointcloud data,新建指针cloud存放点云
if (pcl::io::loadPCDFile<pcl::PointXYZ>("resultjiange0.05liqun.pcd", *cloud) == -1)//*打开点云文件。
{
PCL_ERROR("Couldn't read that pcd file\n");
return(-1);//如果没找到该文件,返回-1,跳出整个main函数
}

二、读取指定目录下的点云

以使用loadPCDFile为例。

[code]	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);	// Generate pointcloud data,新建指针cloud存放点云
if (pcl::io::loadPCDFile<pcl::PointXYZ>("E:/实验/PCL实验/RegionGrowRadius/RegionGrowRadius/resultjiange0.05liqun区域增长/resultjiange0.05liqun.pcd", *cloud) == -1)//*打开点云文件。
{                                                                           //带路径的格式【注意路径的反斜杠与电脑自己的不同】
PCL_ERROR("Couldn't read that pcd file\n");                             // //不带路径的格式【只是把路径删掉即可】
return(-1);
}

写入

[code]#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/point_cloud.h>

using namespace std;  // 可以加入 std 的命名空间

int
main(int argc, char** argv)
{
pcl::PointCloud<pcl::PointXYZ>::Ptr INcloud(new pcl::PointCloud<pcl::PointXYZ>);	// 存放提取出来的边界点云
if (pcl::io::loadPCDFile<pcl::PointXYZ>("boudary_200_100.pcd", *INcloud) == -1)//*打开点云文件。
{                                                                           //带路径的格式【注意路径的反斜杠与电脑自己的不同】:if (pcl::io::loadPCDFile<pcl::PointXYZ>("E:/rabbit_gra.pcd", *cloud) == -1)
PCL_ERROR("Couldn't read that boundary pcd file\n");                             // //不带路径的格式【只是把路径删掉即可】:if (pcl::io::loadPCDFile<pcl::PointXYZ>("rabbit_gra.pcd", *cloud) == -1)
return(-1);
}
//写入磁盘
//写入方法一:
pcl::PCDWriter writer;
writer.write<pcl::PointXYZ>("name_cluster.pcd", *INcloud, false);//将点云保存到PCD文件中

//写入方法二:
pcl::io::savePCDFileASCII("name_cluster.pcd", *INcloud); //将点云保存到PCD文件中
}

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐