int main() { // 加载 PCD v7 格式文件 pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); char strfilepath[256] = "L:\\VS2\\xiangmu\\pcl\\rabbit.pcd"; if (pcl::io::loadPCDFile<pcl::PointXYZ>(strfilepath, *cloud) == -1) { PCL_ERROR("Couldn't read file %s \n"); return 0; } cout << cloud->points.size() << endl; pcl::visualization::CloudViewer viewer("Cloud Viewer"); viewer.showCloud(cloud); viewer.runOnVisualizationThreadOnce(viewerOneOff); system("pause"); return 0; };优化成能读pcd_v7 在vs2022和pcl1.13.1能用的
时间: 2024-03-24 12:41:24 浏览: 61
下面是一个能够在 VS2022 和 PCL 1.13.1 中读取 pcd_v7 格式文件的代码示例:
```cpp
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/pcl_visualizer.h>
void viewerOneOff(pcl::visualization::PCLVisualizer& viewer)
{
viewer.setBackgroundColor(0.0, 0.0, 0.0); // 设置背景颜色为黑色
}
int main()
{
// 加载 PCD v7 格式文件
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
std::string strfilepath = "rabbit.pcd"; // PCD 文件路径
if (pcl::io::loadPCDFile(strfilepath, *cloud) == -1)
{
PCL_ERROR("Couldn't read file %s \n", strfilepath.c_str());
return 0;
}
std::cout << "Loaded " << cloud->points.size() << " data points." << std::endl;
// 可视化点云
pcl::visualization::CloudViewer viewer("Cloud Viewer");
viewer.showCloud(cloud);
viewer.runOnVisualizationThreadOnce(viewerOneOff);
while (!viewer.wasStopped())
{
// 等待直到可视化窗口被关闭
}
return 0;
}
```
需要注意的是,PCL 1.13.1 中的 loadPCDFile() 方法已经支持读取 pcd_v7 格式文件,因此可以直接使用该方法读取文件,而不需要使用 loadPCDFile<pcl::PointXYZ>()。此外,在循环中等待可视化窗口关闭的语句也可以省略,因为 PCLVisualizer 中的 run() 方法已经包含了等待可视化窗口关闭的功能。
阅读全文