学习使用pcl点云库内置的点云读取方法的时候,查到的方法很多都是不能直接打开大型点云的,只适用于小型点云的显示。
小型点云展示
#include "stdafx.h"
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/io/ply_io.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/polygonmesh.h>
#include <pcl/visualization/pcl_visualizer.h>
//这个只能读取小文件
int displayply(string ply_path){
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
if (pcl::io::loadPLYFile<pcl::PointXYZ>(ply_path, *cloud) == -1) //* load the file
{
PCL_ERROR("文件读取失败! \n");
system("PAUSE");
return (-1);
}
//pcl::StatisticalOutlierRemoval::applyFileter()
pcl::visualization::CloudViewer viewer("Viewer");
viewer.showCloud(cloud);
system("PAUSE");
return 0;
}
pcl内置的显示大型点云三角面结果的方法
//头文件导入与上述一致
//读取大型点云
//传入文件路径/文件名
int readply(string ply_path){
pcl::PolygonMesh mesh;
if (pcl::io::loadPLYFile(ply_path, mesh))
{
std::cout << "文件读取失败!";
}
boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer("3D viewer window"));
viewer->addPolygonMesh(mesh, "mesh");
while (!viewer->wasStopped())
{
viewer->spinOnce();
}
return 0;
}