C++ 使用pcl 把pcd点云文件保存为图片,没有rgb,有intensity的值
时间: 2024-03-12 20:50:15 浏览: 204
使用C++与PCL详细过程版实现的点云转强度图像
5星 · 资源好评率100%
如果你想将pcd点云文件保存为图片,可以使用PCL库中的可视化模块和OpenCV库来实现。以下是一个基本的示例代码:
```c++
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/cloud_viewer.h>
#include <opencv2/opencv.hpp>
int main (int argc, char** argv)
{
// 加载pcd文件
pcl::PointCloud<pcl::PointXYZI>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZI>);
pcl::io::loadPCDFile<pcl::PointXYZI> ("input.pcd", *cloud);
// 创建可视化窗口并添加点云
pcl::visualization::CloudViewer viewer ("Simple Cloud Viewer");
viewer.showCloud (cloud);
// 获取窗口截图
pcl::visualization::PCLVisualizer vis;
vis.addPointCloud(cloud);
vis.spinOnce();
cv::Mat img;
vis.getScreenshot(img);
// 将截图保存为图片
cv::imwrite("output.png", img);
return 0;
}
```
在这个示例代码中,我们首先加载pcd文件,并将点云的类型设置为`pcl::PointXYZI`,表示每个点包含intensity值。然后,我们使用`pcl::visualization::CloudViewer`类创建一个可视化窗口,并通过`viewer.showCloud`方法将点云添加到窗口中进行显示。在窗口中,点的intensity值将被当做灰度值进行显示。接下来,我们使用`pcl::visualization::PCLVisualizer`类创建一个可视化窗口,并添加点云。然后,我们调用`vis.spinOnce()`方法等待窗口渲染完成,并通过`vis.getScreenshot`方法获取窗口截图。最后,我们使用OpenCV库的`cv::imwrite`方法将截图保存为图片。
阅读全文