参考博客:
http://unanancyowen.com/en/pcl181/ 点击打开链接 内含PCL1.8.1ALL-in-one Installer MSVC2017 (x32,x64)以及PCL1.8.1 PDB MSVC2017(x32,x64)
https://segmentfault.com/a/1190000003988970
其中vs2017的安装较为简单,这里就不再赘言了。
1.软件角色
pcl是点云算法库。
pcl-pdb是pcl的数据库文件。
cmake是用来为你所编写的程序进行环境配置及生成项目文件。有blog提供不使用Cmake的解决方案,但是从使用上将,建议安装Cmake,这样就不需要每次编写项目的时候还要兼顾配置环境变量。毕竟包含目录,库目录,以及链接器--输入--附加依赖项中加入lib文件是一件并不轻松的工作。
visual studion是windows的开发工具,将经过cmake生成的项目文件执行产生可执行文件。
qt是一个图形库,这里需要安装qt是因为pcl中有一个第三库vtk中涉及qt库中的函数。某些VTK库中的函数对qt有依赖,因此虽然目前不知道用处,但是还是安装了QT。
2.安装PCL1.8.1
由于OpenNI2需要另外安装,其安装路径应在$PCL-ROOT/PCL 1.8.1\3rdParty\OpenNI2下。之后一路点下一步就好。
3.安装Cmake
然后一路next,安装非常简单。
4.利用Cmake进行编译
准备工作
首先在pcl1.8.1文件夹下新建文件夹,可命名为example。如下图:
注意,确定自己安装的文件夹包含cmake文件,且内含PCLConfig.cmake、PCLConfigVersion.cmake如下图:
否则,cmake将一直报错。
在example文件下建立两个文件夹,如图:
cmake-bin是空文件夹,方便编译后的文件存储。
source文件包括:
其中Cmakelists.txt中包含下列cmake程序(可直接粘贴复制):
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
project(pcd_write_test)
find_package(PCL 1.3 REQUIRED COMPONENTS common io)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(pcd_write_test pcd_write.cpp)
target_link_libraries(pcd_write_test ${PCL_COMMON_LIBRARIES} ${PCL_IO_LIBRARIES})
代码的具体含义可参考:
http://pointclouds.org/documentation/tutorials/using_pcl_pcl_config.php
点击打开链接
同时在vs2017中新建项目,名称设为pcd_write 其中输入测试代码,如:
#include <pcl/visualization/cloud_viewer.h>
#include <iostream>//标准C++库中的输入输出类相关头文件。
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>//pcd 读写类相关的头文件。
#include <pcl/io/ply_io.h>
#include <pcl/point_types.h> //PCL中支持的点类型头文件。
int user_data;
void viewerOneOff(pcl::visualization::PCLVisualizer& viewer)
{
viewer.setBackgroundColor(1.0, 0.5, 1.0); //设置背景颜色
}
int main()
{
pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGBA>);
pcl::io::loadPCDFile("test.pcd", *cloud);
pcl::visualization::CloudViewer viewer("Cloud Viewer"); //创建viewer对象
viewer.showCloud(cloud);
viewer.runOnVisualizationThreadOnce(viewerOneOff);
system("pause");
return 0;
}
将其保存在PCL1.8.1/example/source文件夹下
开始编译
打开Cmake,
值得注意的有几点:
1.将where is the source code和where to build the binaries 如图设置好后,会弹出选择VS版本的选项,选择 VS 15 2017 win64.可根据自身版本进行选择。
2.框格中有红色字体报warning不用慌,只要如下:
出现Configuring done 和Generating done之后,即说明Cmake编译成功。二者的作用如下:
这个时候,就可以愉快的进入Cmake-bin文件夹,此时该文件下下应为:
设置的名称不同,sln文件名和vcvproj的文件名会和图中不一致,不必纠结,可对应即可。
打开Sln文件,进行vs2017.
如出现如下error1:
无法启动程序D:\build\debug\ALL_BUILD 系统找不到指定文件;
处理办法为:
将project_inliers工程设置为启动项目 找到项目右击--设为启动项目。
将project_inliers工程设置为启动项目
error2:
error LNK2019: 无法解析的外部符号
在VC++目录--库目录中加入PCL1.8.1/lib文件;
在附加依赖项中加入:pcl下 的lib文件名:
如:
pcl_common_debug.lib
pcl_common_release.lib
pcl_features_debug.lib
pcl_features_release.lib
pcl_filters_debug.lib
pcl_filters_release.lib
pcl_io_debug.lib
pcl_io_ply_debug.lib
pcl_io_ply_release.lib
pcl_io_release.lib
pcl_kdtree_debug.lib
pcl_kdtree_release.lib
pcl_keypoints_debug.lib
pcl_keypoints_release.lib
pcl_ml_debug.lib
pcl_ml_release.lib
pcl_octree_debug.lib
pcl_octree_release.lib
pcl_outofcore_debug.lib
pcl_outofcore_release.lib
pcl_people_debug.lib
pcl_people_release.lib
pcl_recognition_debug.lib
pcl_recognition_release.lib
pcl_registration_debug.lib
pcl_registration_release.lib
pcl_sample_consensus_debug.lib
pcl_sample_consensus_release.lib
pcl_search_debug.lib
pcl_search_release.lib
pcl_segmentation_debug.lib
pcl_segmentation_release.lib
pcl_stereo_debug.lib
pcl_stereo_release.lib
pcl_surface_debug.lib
pcl_surface_release.lib
pcl_tracking_debug.lib
pcl_tracking_release.lib
pcl_visualization_debug.lib
pcl_visualization_release.lib
可能有同学会问:如何一下得到上述的lib文件名称,而不是一个一个的粘贴复制:
有方法如下:
分别粘贴复制静态链接库名到文本甚是麻烦,故通过批处理来完成
例如要获取目录中E:\CPlusPlusLib\VTK_debug\VTK2008\lib\vtk-5.8下的所有静态链接库文件名并存储至文本.txt,方法如下:
1、win+r
2、输入:cmd回车
3、输入:cd /d E:\CPlusPlusLib\VTK_debug\VTK2008\lib\vtk-5.8 回车
4、输入:dir /b *.lib*>0.txt 回车
在0.txt文件中即可获得。
按照上述方法运行编译后的pcd_write.cpp文档不报错,且出现:
即为安装 成功,至于为什么是这三种颜色,而不是test.pcd 中的兔子
因为没有点云的数据库啊!!!