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 0; 50 }