* pcl下载,网址https://github.com/PointCloudLibrary/pcl
<https://github.com/PointCloudLibrary/pcl>
使用git命令或者直接下载zip文件即可。
1.安装依赖 sudo apt-get update sudo apt-get install git build-essential linux
-libc-dev sudo apt-get install cmake cmake-gui sudo apt-get install libusb-1.0-0
-dev libusb-dev libudev-dev sudo apt-get install mpi-default-dev openmpi-bin
openmpi-common sudo apt-get install libflann1.8 libflann-dev sudo apt-get
install libeigen3-dev sudo apt-get install libboost-all-dev sudo apt-get
install libvtk5.10-qt4 libvtk5.10 libvtk5-dev sudo apt-get install libqhull*
libgtest-dev sudo apt-get install freeglut3-dev pkg-config sudo apt-get install
libxmu-dev libxi-dev sudo apt-get install mono-complete sudo apt-get install qt
-sdk openjdk-8-jdk openjdk-8-jre
2.编译源码
cmake -D CMAKE_BUILD_TYPE=None -D BUILD_GPU=ON -D BUILD_apps=ON -D
BUILD_examples=ON . make -j2 sudo make install
3.(可选 and 建议):如果需要PCLVisualizer。安装OpenNI、OpenNI2
sudo apt-get install libopenni-dev sudo apt-get install libopenni2-dev
安装完成。

例程测试:
例1:学习向PCD文件写入点云数据
来源于http://www.cnblogs.com/li-yao7758258/p/6435568.html
<http://www.cnblogs.com/li-yao7758258/p/6435568.html>
#include <iostream> //标准C++库中的输入输出的头文件 #include <pcl/io/pcd_io.h>
//PCD读写类相关的头文件 #include <pcl/point_types.h> //PCL中支持的点类型的头文件 int main (int argc,
char** argv) { //实例化的模板类PointCloud 每一个点的类型都设置为pcl::PointXYZ
/************************************************* 点PointXYZ类型对应的数据结构 Structure
PointXYZ{ float x; float y; float z; };
**************************************************/
pcl::PointCloud<pcl::PointXYZ> cloud;// 创建点云 并设置适当的参数(width height is_dense)
cloud.width =5; cloud.height = 1; cloud.is_dense = false; //不是稠密型的
cloud.points.resize (cloud.width * cloud.height);//点云总数大小
//用随机数的值填充PointCloud点云对象 for (size_t i = 0; i < cloud.points.size (); ++i) {
cloud.points[i].x =1024 * rand () / (RAND_MAX + 1.0f); cloud.points[i].y = 1024
* rand () / (RAND_MAX +1.0f); cloud.points[i].z = 1024 * rand () / (RAND_MAX +
1.0f); } //把PointCloud对象数据存储在 test_pcd.pcd文件中 pcl::io::savePCDFileASCII (
"test_pcd.pcd", cloud); //打印输出存储的点云数据 std::cerr << "Saved " <<
cloud.points.size () <<" data points to test_pcd.pcd." << std::endl; for
(size_t i =0; i < cloud.points.size (); ++i) std::cerr << " " <<
cloud.points[i].x <<" " << cloud.points[i].y << " " << cloud.points[i].z << std
::endl;return (0); } cmake_minimum_required ( VERSION 2.6 FATAL_ERROR)
#对于cmake版本的最低版本的要求 project(ch2) #建立的工程名,例如源代码目录路径的变量名为CH_DIR
#工程存储目录变量名为CH_BINARY_DIR#要求工程依赖的PCL最低版本为1.3,并且版本至少包含common和IO两个模块
这里的REQUIRED意味着如果对应的库找不到 则CMake配置的过程将完全失败, #因为PCL是模块化的,也可以如下操作: # 一个组件
find_package(PCL 1.6 REQUIRED COMPONENTS io) # 多个组件 find_package(PCL 1.6
REQUIRED COMPONENTS commom io) # 所有组件 find_package(PCL 1.6 REQUIRED )
find_package(PCL1.3 REQUIRED)
#下面的语句是利用CMake的宏完成对PCL的头文件路径和链接路径变量的配置和添加,如果缺少下面几行,生成文件的过程中就会提示
#找不到相关的头文件,在配置CMake时,当找到了安装的PCL,下面相关的包含的头文件,链接库,路径变量就会自动设置 #
PCL_FOUND:如果找到了就会被设置为1 ,否则就不设置 # PCL_INCLUDE_DIRS:被设置为PCL安装的头文件和依赖头文件的目录 #
PCL_LIBRARIES:被设置成所建立和安装的PCL库头文件 # PCL_LIBRARIES_DIRS:被设置成PCL库和第三方依赖的头文件所在的目录 #
PCL_VERSION:所找到的PCL的版本 # PCL_COMPONENTS:列出所有可用的组件 #
PCL_DEFINITIONS:列出所需要的预处理器定义和编译器标志 include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARIES_DIRS}) add_definitions(${PCL_DEFINITIONS})
#这句话告诉CMake从单个源文件write_pcd建立一个可执行文件 add_executable(write_pcd write_pcd.cpp)
#虽然包含了PCL的头文件,因此编译器知道我们现在访问所用的方法,我们也需要让链接器知道所链接的库,PCL找到库文件由
#PCL_COMMON_LIBRARIES变量指示,通过target_link_libraries这个宏来出发链接操作
target_link_libraries(write_pcd ${PCL_COMMON_LIBRARIES} ${PCL_IO_LIBRARIES})
mkdir buildcd build cmake .. make
结果如图所示:


例2:可视化
来源于https://blog.csdn.net/a464057216/article/details/54864591
<https://blog.csdn.net/a464057216/article/details/54864591>
#include <iostream> #include <string> #include <pcl/io/pcd_io.h> #include
<pcl/point_types.h> #include <pcl/visualization/pcl_visualizer.h> using
namespace std; int main (int argc, char** argv){ typedef pcl::PointXYZRGB
PointT; pcl::PointCloud<PointT>::Ptr cloud (new pcl::PointCloud<PointT>); std::
string dir = "";//自行修改路径 std::string filename = "sample.pcd"; if
(pcl::io::loadPCDFile<PointT> ((dir+filename), *cloud) == -1){ //* load the file
PCL_ERROR ("Couldn't read PCD file \n"); return (-1); } printf("Loaded %d data
points from PCD\n", cloud->width * cloud->height);
pcl::visualization::PCLVisualizer viewer("Cloud viewer");
viewer.setCameraPosition(0,0,-3.0,0,-1,0); viewer.addCoordinateSystem(0.3);
viewer.addPointCloud(cloud);while(!viewer.wasStopped()) viewer.spinOnce(100);
return (0); }
运行结果如下:

参考博客:https://blog.csdn.net/dantengc/article/details/78446600
<https://blog.csdn.net/dantengc/article/details/78446600>
https://blog.csdn.net/xs1102/article/details/74736298
<https://blog.csdn.net/xs1102/article/details/74736298>

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信