C++ 要打印输出pcl::PCLPointCloud2::Ptr内容, 打印格式是什么
时间: 2023-07-30 13:08:04 浏览: 83
可以使用以下代码打印输出 pcl::PCLPointCloud2::Ptr 内容:
```c++
#include <pcl/io/pcd_io.h>
#include <pcl/point_cloud.h>
pcl::PCLPointCloud2::Ptr cloud(new pcl::PCLPointCloud2());
pcl::PCDReader reader;
reader.read("your_point_cloud.pcd", *cloud);
for (size_t i = 0; i < cloud->fields.size(); ++i)
{
std::cout << cloud->fields[i].name << "\t";
}
std::cout << std::endl;
for (size_t i = 0; i < cloud->height * cloud->width; ++i)
{
for (size_t j = 0; j < cloud->fields.size(); ++j)
{
uint8_t* ptr = &cloud->data[i * cloud->point_step + cloud->fields[j].offset];
if (cloud->fields[j].datatype == pcl::PCLPointField::FLOAT32)
{
std::cout << *((float*)ptr) << "\t";
}
else if (cloud->fields[j].datatype == pcl::PCLPointField::UINT16)
{
std::cout << *((uint16_t*)ptr) << "\t";
}
// add other data types as necessary
}
std::cout << std::endl;
}
```
其中,`cloud->fields` 存储了点云数据中的每个字段的名称、偏移量和数据类型等信息。`cloud->data` 存储了实际的点云数据。`cloud->point_step` 是每个点的字节数。在循环中,使用 `ptr` 指向每个字段的数据,并根据数据类型进行解析和输出。
阅读全文