基于pcl库写一段保存多个点云数据到不同的ply文件并用不同的颜色可视化的c++代码
以下是基于pcl库写的保存多个点云数据到不同的ply文件并用不同颜色可视化的C++代码:
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/visualization/pcl_visualizer.h>
int main()
{
// 创建点云数据
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGB>);
// 填充点云数据
cloud->width = 100;
cloud->height = 1;
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);
cloud->points[i].r = 255;
cloud->points[i].g = 0;
cloud->points[i].b = 0;
}
// 可视化点云数据
pcl::visualization::PCLVisualizer viewer("Cloud Viewer");
viewer.setBackgroundColor(0.0, 0.0, 0.0);
viewer.addPointCloud<pcl::PointXYZRGB>(cloud, "cloud");
viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "cloud");
viewer.spin();
// 保存点云数据到不同的PLY文件
for (int i = 0; i < 10; i++)
{
std::string filename = "cloud_" + std::to_string(i) + ".ply";
pcl::io::savePLYFileASCII(filename, *cloud);
std::cout << "Saved " << filename << std::endl;
// 修改点云颜色
for (size_t j = 0; j < cloud->points.size(); ++j)
{
cloud->points[j].r = i * 25;
cloud->points[j].g = i * 25;
cloud->points[j].b = i * 25;
}
// 更新点云可视化
viewer.updatePointCloud(cloud, "cloud");
viewer.spinOnce();
}
return 0;
}
这段代码首先创建了一个点云数据cloud,并填充了随机的XYZ坐标和红色的RGB颜色。然后使用pcl::visualization::PCLVisualizer进行点云的可视化。接着使用循环保存点云数据到不同的PLY文件,并修改点云的颜色,实时更新点云的可视化效果。最后,程序退出并返回0
原文地址: https://www.cveoy.top/t/topic/hSNE 著作权归作者所有。请勿转载和采集!