《PCL点云库学习&VS2010(X64)》Part 21 VTK6.2+VS2013 利用PCL读取ply格式网格曲面
写这个主要是在三维网格重构后用的,利用vtk显示点云数据,对ply格式是有要求的,有的ply格式纯粹就是点云数据,也可以理解为是pcd格式的电云数据。
但是在使用Crust算法生成曲面后,在Meshlab中渲染出来的效果才能出现曲面,在CloudCompare中却是零碎的曲面,就和破面一样,它里面有没有其他的高级渲染功能我就不知道了,试过但是没有找到。
然后就自己去网上找了一个例子来尝试自己的想法。
#include <pcl/common/io.h>
#include <pcl/io/io.h>
#include <pcl/point_cloud.h>
#include <pcl/io/ply_io.h>
#include <pcl/io/ply/ply.h>
#include <pcl/console/parse.h>
#include <iostream>
#include <string>
#include <pcl/point_types.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/PolygonMesh.h>
#include <pcl/io/ply_io.h>
#include <pcl/io/vtk_lib_io.h>
//#include <pcl/io/vtk_lib_io.hpp>
#include <pcl/io/vtk_io.h>
#include <stdlib.h>
using namespace pcl;
using namespace pcl::io;
using namespace pcl::console;
using namespace std;
int
main(int argc, char** argv)
{
//pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
PolygonMesh cloud;
//boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer;
pcl::visualization::PCLVisualizer viewer("PCL PolygonMesh");
string filename = "Output_.ply";
pcl::io::loadPolygonFilePLY(filename, cloud);
viewer.addPolygonMesh(cloud);
viewer.setBackgroundColor(0.2, 0.0, 0.0);
while (!viewer.wasStopped())
{
viewer.spinOnce();
}
return 0;
}
上面的头文件有的是多余的,自己看着删除,不删也没关系。
还有自己的Output_.ply是Power Crust算法得到的结果,也就是上面所说的曲面,放在不同软件里效果不同。
看看该程序效果:
再分别看看cloudcompare(左图)和meshlab(右图)中的效果:
这个程序经过修改后可以得到以下的效果,结合PCL,将效果展示出来,也可以根据这个做出MAT的中轴曲面。
效果图: