1.pcl点云读入代码
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h> // 里面是pcl库点云的数据类型
int
main(int argc,char** argv)
{
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>); // 建立一个点云指针
// 判断这个文件存不存在,条件里面是让这个指针指向这个点云数据
if(pcl::io::loadPCDFile<pcl::PointXYZ>("/home/zyh/3dshijue/3/IO/1readingpcd/source/test_pcd.pcd",*cloud)==-1)
{
PCL_ERROR("Couldn't read file test_pcd.pcd\n");
return(-1);
}
// 打印点云文件里面的点云数量信息
std::cout<<"Loaded "
<<cloud->width*cloud->height
<<cloud->width
<<cloud->height
<<" data points from test_pcd.pcd with the following fields: "
<<std::endl;
// 打印每一个点的xyz坐标
for(size_t i=0;i<cloud->points.size();++i)
std::cout<<" "<<cloud->points[i].x
<<" "<<cloud->points[i].y
<<" "<<cloud->points[i].z<<std::endl;
return(0);
}
2.工程架构
3.项目每一部分里面的内容
(1).CMakeLists.txt
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(pcd_read)
find_package(PCL 1.2 REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(pcd_read pcd_read.cpp)
target_link_libraries(pcd_read ${PCL_LIBRARIES})
(2)pcd_read.cpp代码在第一部分
(3)test_pcd.pcd:点云数据
# .PCD v0.7 - Point Cloud Data file format
VERSION 0.7
FIELDS x y z
SIZE 4 4 4
TYPE F F F
COUNT 1 1 1
WIDTH 5
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 5
DATA ascii
1.28125 577.09375 197.9375
828.125 599.03125 491.375
358.6875 917.4375 842.5625
764.5 178.28125 879.53125
727.53125 525.84375 311.28125
4.项目构建流程
(1)在source下mkdir build
mkdir build
(2)在build里面cmake…
cmake..
(3) 在build里面make
make
(4)直接运行build里面编译好的项目:./pcd_read
./pcd_read