基于pcl库将容器stdvectorpclPointCloudpclPointXYZRGBPtr yezi内指针数据输出的c++代码
以下是基于pcl库将容器std::vector<pcl::PointCloudpcl::PointXYZRGB::Ptr> yezi内指针数据输出的C++代码示例:
#include <iostream>
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>
int main()
{
std::vector<pcl::PointCloud<pcl::PointXYZRGB>::Ptr> yezi;
// 示例数据
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>);
// 假设每个点云有一些数据
cloud1->width = 10;
cloud1->height = 1;
cloud1->points.resize(cloud1->width * cloud1->height);
for (size_t i = 0; i < cloud1->points.size(); ++i)
{
cloud1->points[i].x = i;
cloud1->points[i].y = i * 2;
cloud1->points[i].z = i * 3;
}
cloud2->width = 5;
cloud2->height = 1;
cloud2->points.resize(cloud2->width * cloud2->height);
for (size_t i = 0; i < cloud2->points.size(); ++i)
{
cloud2->points[i].x = i * 10;
cloud2->points[i].y = i * 20;
cloud2->points[i].z = i * 30;
}
cloud3->width = 8;
cloud3->height = 1;
cloud3->points.resize(cloud3->width * cloud3->height);
for (size_t i = 0; i < cloud3->points.size(); ++i)
{
cloud3->points[i].x = i * 100;
cloud3->points[i].y = i * 200;
cloud3->points[i].z = i * 300;
}
// 将点云指针添加到容器
yezi.push_back(cloud1);
yezi.push_back(cloud2);
yezi.push_back(cloud3);
// 遍历输出点云数据
for (size_t i = 0; i < yezi.size(); ++i)
{
std::cout << "PointCloud " << i << " has " << yezi[i]->points.size() << " points." << std::endl;
for (size_t j = 0; j < yezi[i]->points.size(); ++j)
{
std::cout << " Point " << j << ": "
<< yezi[i]->points[j].x << " "
<< yezi[i]->points[j].y << " "
<< yezi[i]->points[j].z << std::endl;
}
}
return 0;
}
这段代码创建了一个包含三个点云指针的容器std::vector<pcl::PointCloud<pcl::PointXYZRGB>::Ptr> yezi,并将每个点云指针添加到容器中。然后,使用两个嵌套的循环遍历输出每个点云的数据。注意,示例中的点云数据只是用于演示目的,你可以根据自己的需要替换为实际的点云数据
原文地址: https://www.cveoy.top/t/topic/iaeZ 著作权归作者所有。请勿转载和采集!