基于pcl库将容器stdvectorpclPointCloudpclPointXYZRGBPtr yezi内每个指针用不同颜色可视化在一个窗口的c++代码
下面是一个基于PCL库将容器std::vector<pcl::PointCloudpcl::PointXYZRGB::Ptr> yezi内每个指针用不同颜色可视化在一个窗口的C++代码示例:
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>
int main()
{
std::vector<pcl::PointCloud<pcl::PointXYZRGB>::Ptr> yezi;
// 假设yezi中有三个PointCloud指针
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud1(new pcl::PointCloud<pcl::PointXYZRGB>);
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud2(new pcl::PointCloud<pcl::PointXYZRGB>);
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud3(new pcl::PointCloud<pcl::PointXYZRGB>);
// 将PointCloud添加到yezi容器中
yezi.push_back(cloud1);
yezi.push_back(cloud2);
yezi.push_back(cloud3);
// 为每个PointCloud设置不同的颜色
cloud1->points.resize(100);
cloud2->points.resize(200);
cloud3->points.resize(300);
for (auto& point : cloud1->points)
{
point.r = 255;
point.g = 0;
point.b = 0;
}
for (auto& point : cloud2->points)
{
point.r = 0;
point.g = 255;
point.b = 0;
}
for (auto& point : cloud3->points)
{
point.r = 0;
point.g = 0;
point.b = 255;
}
// 可视化窗口
pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("PointCloud Viewer"));
// 设置背景颜色
viewer->setBackgroundColor(0, 0, 0);
// 添加PointCloud到可视化器中
int cloud_index = 0;
for (auto& cloud : yezi)
{
std::string cloud_id = "cloud" + std::to_string(cloud_index);
pcl::visualization::PointCloudColorHandlerRGBField<pcl::PointXYZRGB> color_handler(cloud);
viewer->addPointCloud<pcl::PointXYZRGB>(cloud, color_handler, cloud_id);
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, cloud_id);
cloud_index++;
}
// 显示可视化窗口
while (!viewer->wasStopped())
{
viewer->spinOnce();
}
return 0;
}
这段代码首先创建了一个名为yezi的std::vector<pcl::PointCloudpcl::PointXYZRGB::Ptr>类型的容器。然后,假设yezi中有三个PointCloud指针,将它们添加到yezi容器中。接下来,为每个PointCloud设置不同的颜色。然后,创建一个PCLVisualizer对象作为可视化窗口,并设置背景颜色。最后,将每个PointCloud添加到可视化器中,并设置不同的ID和颜色处理器。最后,在while循环中显示可视化窗口,直到窗口被关闭
原文地址: https://www.cveoy.top/t/topic/iac4 著作权归作者所有。请勿转载和采集!