环境:WIN10, Visual Studio 2019, PCL1.10.1
1. 官网下载 有3个文件
PCL-1.10.1-AllInOne-msvc2019-win64.exe,包括PCL库和它所依赖的第三方库(除了QT)
pcl-1.10.1-pdb-msvc2019-win64.zip,visual studio debug pdb文件
pcl-pcl-1.10.1.zip,PCL源码
2. 由源码编译PCL
先安装PCL-1.10.1-AllInOne-msvc2019-win64.exe,然后解压pcl-1.10.1-pdb-msvc2019-win64.zip文件到PCL/bin目录下,即可得到预编译好的PCL库。为了后续方便学习PCL内部实现,我从源码编译PCL,参考自官网说明 Compiling PCL from source on Windows。
首先准备PCL依赖的第三方库,为了省事,可直接安装PCL-1.10.1-AllInOne-msvc2019-win64.exe,且取消勾选PCL
使用CMake配置工程
依次设置Boost, Eigen, FLANN, Qt, VTK, QHull, OpenNI库的路径;
另外默认没有勾选BUILD_visualization,勾选上;
修改 CMAKE_INSTALL_PREFIX路径,CMAKE_INSTALL_PREFIXD:/work/siggraph/pcl-1.10.1/install/PCL(也可以不修改,默认在C盘,在VS执行install时需要以管理员权限比较麻烦)
打开PCL.sln开始编译,然后运行INSTALL将PCL库拷贝到INSTALL制定目录下。
3. PCL HelloWorld程序
参考自 Using PCL in your own project
如下目录新建文件CMakeLists.txt, main.cpp和build文件夹
CMakeLists.txt文件
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
project(helloworld)
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(helloworld main.cpp)
target_link_libraries(helloworld ${PCL_LIBRARIES})
main.cpp文件(拷贝自PCL源码 pcl-1.10.1\doc\tutorials\content\sources\pcd_write)
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
int
main(int argc, char** argv)
{
pcl::PointCloud<pcl::PointXYZ> cloud;
// Fill in the cloud data
cloud.width = 5;
cloud.height = 1;
cloud.is_dense = false;
cloud.points.resize(cloud.width * cloud.height);
for (std::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);
}
pcl::io::savePCDFileASCII("test_pcd.pcd", cloud);
std::cerr << "Saved " << cloud.points.size() << " data points to test_pcd.pcd." << std::endl;
for (std::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配置项目,注意指定PCL_DIR为之前INSTALL路径 D:/work/siggraph/pcl-1.10.1/install/PCL/cmake
打开helloworld.sln,编译运行