基于windows平台的pcl点云分析库部署

来源:互联网 发布:php yaf文档 编辑:程序博客网 时间:2024/05/30 04:31
部署需求安装包:
1.pcl源码(https://github.com/PointCloudLibrary/pcl/archive/master.zip)
2.boost 1.50版 c++扩展库
3.eigen 3.0.5版 矩阵运算
4.flann 1.7.1版 最邻近算法库
5.qhull 6.2.0版 凸包计算,主要用于表面重建
6.cmake 生成编译解决方案

先安装上面提到的PCL需求的第三方库,都有现成的安装包,很方便,需要注意的是在安装这些第三方库的时候要将第三方库所在的路径加入到系统环境中。
说明一下,因为这里只是用pcl进行计算,所以没有引入VTK,QT,NI这三个库,其中VTK用于三维可视化,QT用于提供GUI界面,NI提供点云的输入输出接口,例如一些商业化的体感摄像头。

下面, 解压下载好的pcl源码包,打开Cmake,在source code 这一栏里面设置解压好的PCL源码路径,在build the binaries 这一栏里填写想要存放解决方案的路径。
填完地址后configure, 选择编译环境,官方推荐用visual studio 2008或者visual studio 2010,在搜索框里搜索CMAKE_INSTALL_PREFIX ,这里填写希望输出PCL库文件以及头文件的目录(注意,尽量不要写在program files文件夹底下,这个文件夹的文件写入需要管理员权限),完成之后进行Generate

等待生成解决方案,打开build目录下pcl.sln,编译INSTALL这一项。时间较长,请耐心等待。

到此,PCL就已经编译完成,下面进行项目部署
新建一个空项目,新建文件test.cpp,在项目属性中配置包含目录
pclinstall/include/pcl-1.8/
boost/include/
Eigen/include/
flann/include/
qhull/include/
在库目录中加入下列目录
pclinstall/lib/
boost/lib/
Eigen/lib/
flann/lib/
qhull/lib/
在连接器-》附加依赖项 中加入下列文件
pcl_common_debug.lib
pcl_features_debug.lib
pcl_filters_debug.lib
pcl_io_debug.lib
pcl_io_ply_debug.lib
pcl_kdtree_debug.lib
pcl_keypoints_debug.lib
pcl_ml_debug.lib
pcl_octree_debug.lib
pcl_recognition_debug.lib
pcl_registration_debug.lib
pcl_sample_consensus_debug.lib
pcl_search_debug.lib
pcl_segmentation_debug.lib
pcl_stereo_debug.lib
pcl_surface_debug.lib
pcl_tracking_debug.lib
这里用debug方式编译,方便调试PCL源码,若用release方式编译,则lib文件后面没有_debug后缀

在test.cpp中写入下面计算法向量的代码
#include <iostream>
#include <pcl\point_types.h>
#include <pcl\features\normal_3d.h>
int main()
{
 pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
 for(int i = 0; i < 100; i++)
 {
  cloud->push_back(pcl::PointXYZ(1.0, 0.0, i/10));
  cloud->push_back(pcl::PointXYZ(0.0, 1.0, i/10));
  cloud->push_back(pcl::PointXYZ(0.0, 0.0, i/10));
 }
 pcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> normal;
 normal.setInputCloud(cloud);
 normal.setRadiusSearch(2.0);
 pcl::PointCloud<pcl::Normal>::Ptr normals(new pcl::PointCloud<pcl::Normal>); //创建法向量点云  
 normal.compute(*normals);//计算法向量  
 std::cout<<*normals<<std::endl;
 int i;
 std::cin>>i;
}
运行成功则表示PCL部署成功。



0 0
原创粉丝点击