下面是一个基于PCL库的C++代码示例,用于保存多个点云数据为PLY文件并使用不同的颜色进行可视化:

#include <iostream>
#include <pcl/io/ply_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/pcl_visualizer.h>

int main()
{
    // 创建点云数据
    pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGB>);
    pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud2(new pcl::PointCloud<pcl::PointXYZRGB>);

    cloud->width = 100;
    cloud->height = 1;
    cloud->points.resize(cloud->width * cloud->height);

    cloud2->width = 100;
    cloud2->height = 1;
    cloud2->points.resize(cloud2->width * cloud2->height);

    for (size_t i = 0; i < cloud->points.size(); ++i)
    {
        cloud->points[i].x = static_cast<float>(1024 * rand() / (RAND_MAX + 1.0));
        cloud->points[i].y = static_cast<float>(1024 * rand() / (RAND_MAX + 1.0));
        cloud->points[i].z = static_cast<float>(1024 * rand() / (RAND_MAX + 1.0));
        cloud->points[i].r = 255;
        cloud->points[i].g = 0;
        cloud->points[i].b = 0;

        cloud2->points[i].x = static_cast<float>(1024 * rand() / (RAND_MAX + 1.0));
        cloud2->points[i].y = static_cast<float>(1024 * rand() / (RAND_MAX + 1.0));
        cloud2->points[i].z = static_cast<float>(1024 * rand() / (RAND_MAX + 1.0));
        cloud2->points[i].r = 0;
        cloud2->points[i].g = 255;
        cloud2->points[i].b = 0;
    }

    // 保存点云数据为PLY文件
    pcl::PLYWriter writer;
    writer.write("cloud1.ply", *cloud);
    writer.write("cloud2.ply", *cloud2);

    // 可视化点云数据
    pcl::visualization::PCLVisualizer viewer("Cloud Viewer");
    viewer.setBackgroundColor(0.0, 0.0, 0.0);
    viewer.addPointCloud<pcl::PointXYZRGB>(cloud, "cloud1");
    viewer.addPointCloud<pcl::PointXYZRGB>(cloud2, "cloud2");
    viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR, 1.0, 0.0, 0.0, "cloud1");
    viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR, 0.0, 1.0, 0.0, "cloud2");
    viewer.spin();

    return 0;
}

这段代码创建了两个PointCloudpcl::PointXYZRGB对象,每个对象包含100个点。然后,使用rand()函数随机生成每个点的坐标,并为第一个点云设置红色,第二个点云设置绿色。接下来,使用pcl::PLYWriter将点云数据保存为PLY文件。最后,使用PCLVisualizer进行可视化,并为每个点云设置相应的颜色

基于pcl库写一段保存多个点云数据为ply文件并用不同的颜色可视化的c++代码

原文地址: https://www.cveoy.top/t/topic/hSNA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录