1.源代码
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
// 读pcd文件
bool readPCDFile()
{
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); // 创建POintCloud<PointXYZ>boost共享指针并进行实例化
// 打开点云文件
if (pcl::io::loadPCDFile<pcl::PointXYZ>("txt2pcd_bunny1.pcd", *cloud) == -1) {
return false;
}
// 打印点云数据
for (const auto& point : *cloud) {
std::cout << " " << point.x
<< " " << point.y
<< " " << point.z << std::endl;
}
return true;
}
// 写pcd文件
bool writePCDFile()
{
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);
}
pcl::io::savePCDFileASCII("test_pcd.pcd", cloud); // 将点云数据存储在文件中
// 打印点云数据
for (const auto& point : cloud) {
std::cerr << " " << point.x << " " << point.y << " " << point.z << std::endl;
}
return true;
}
int main()
{
readPCDFile();
writePCDFile();
return 0;
}