ply|pcd文件读取

Posted on 2016-11-23 15:47  jizhang02  阅读(2122)  评论(1编辑  收藏  举报
 1 #include <pcl/point_types.h>
 2 #include <pcl/io/pcd_io.h>
 3 #include <pcl/io/ply_io.h>
 4 #include <pcl/kdtree/kdtree_flann.h>
 5 #include <pcl/features/normal_3d.h>
 6 #include <pcl/surface/gp3.h>
 7 #include <pcl/visualization/pcl_visualizer.h>
 8 #include <boost/thread/thread.hpp>
 9 #include <fstream>
10 #include <iostream>
11 #include <stdio.h>
12 #include <string.h>
13 #include <string>
14 
15 int main (int argc, char** argv)
16 {
17     // 确定文件格式
18     char tmpStr[100];
19     strcpy(tmpStr,argv[1]);
20     char* pext = strrchr(tmpStr, '.');
21     std::string extply("ply");
22     std::string extpcd("pcd");
23     if(pext){
24         *pext='\0';
25         pext++;
26     }
27     std::string ext(pext);
28     //如果不支持文件格式,退出程序
29     if (!((ext == extply)||(ext == extpcd))){
30         std::cout << "文件格式不支持!" << std::endl;
31         std::cout << "支持文件格式:*.pcd和*.ply!" << std::endl;
32         return(-1);
33     }
34 
35     //根据文件格式选择输入方式
36     pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>) ; //创建点云对象指针,用于存储输入
37     if (ext == extply){
38         if (pcl::io::loadPLYFile(argv[1] , *cloud) == -1){
39             PCL_ERROR("Could not read ply file!\n") ;
40             return -1;
41         }
42     }
43     else{
44         if (pcl::io::loadPCDFile(argv[1] , *cloud) == -1){
45             PCL_ERROR("Could not read pcd file!\n") ;
46             return -1;
47         }
48     }
49     return 050 }