C++ 使用 PCL 库保存多个点云数据到自动生成的 PCD 文件
#include
int main() { // 创建点云指针向量 std::vector<pcl::PointCloudpcl::PointXYZ::Ptr> clouds;
// 创建点云数据
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud1(new pcl::PointCloud<pcl::PointXYZ>);
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud2(new pcl::PointCloud<pcl::PointXYZ>);
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud3(new pcl::PointCloud<pcl::PointXYZ>);
// 填充点云数据
cloud1->width = 100;
cloud1->height = 1;
cloud1->points.resize(cloud1->width * cloud1->height);
for (size_t i = 0; i < cloud1->points.size(); ++i) {
cloud1->points[i].x = static_cast<float>(i);
cloud1->points[i].y = static_cast<float>(i);
cloud1->points[i].z = static_cast<float>(i);
}
cloud2->width = 200;
cloud2->height = 1;
cloud2->points.resize(cloud2->width * cloud2->height);
for (size_t i = 0; i < cloud2->points.size(); ++i) {
cloud2->points[i].x = static_cast<float>(i);
cloud2->points[i].y = static_cast<float>(i);
cloud2->points[i].z = static_cast<float>(i);
}
cloud3->width = 300;
cloud3->height = 1;
cloud3->points.resize(cloud3->width * cloud3->height);
for (size_t i = 0; i < cloud3->points.size(); ++i) {
cloud3->points[i].x = static_cast<float>(i);
cloud3->points[i].y = static_cast<float>(i);
cloud3->points[i].z = static_cast<float>(i);
}
// 将点云指针添加到向量中
clouds.push_back(cloud1);
clouds.push_back(cloud2);
clouds.push_back(cloud3);
// 保存点云数据
for (size_t i = 0; i < clouds.size(); ++i) {
std::string filename = "cloud_" + std::to_string(i) + ".pcd";
pcl::io::savePCDFileASCII(filename, *clouds[i]);
std::cout << "Saved " << filename << std::endl;
}
return 0;
}
原文地址: http://www.cveoy.top/t/topic/pD1E 著作权归作者所有。请勿转载和采集!