【版权声明】
本文为博主原创文章,未经博主允许严禁转载,我们会定期进行侵权检索。
本文主要介绍windows下PCL环境安装与配置,特别是用于vscode的C++工程。Python PCL环境安装与测试请参考《【python pcl】Windows 10 python pcl 安装与测试_windows 安装pclpy-CSDN博客》(https://blog.csdn.net/suiyingy/article/details/124932661)。
1 安装PCL库
1.1 PCL下载
PCL历史版本下载地址为Releases · PointCloudLibrary/pcl · GitHub(https://github.com/PointCloudLibrary/pcl/releases/)。这里以1.9.1版本为例,下载地址为Release pcl-1.9.1 · PointCloudLibrary/pcl · GitHub(https://github.com/PointCloudLibrary/pcl/releases/tag/pcl-1.9.1)。滚动到页面底部,选择适合系统的版本下载即可。例如,在页面底部分别下载PCL-1.9.1-AllInOne-msvc2017-win64.exe和pcl-1.9.1-pdb-msvc2017-win64.zip。
1.2 安装步骤
(1)双击打开PCL-1.9.1-AllInOne-msvc2017-win64.exe,按照提示进行安装即可。
(2)安装中途会会弹出安装OpenNI 提示框,将安装路径选择为PCL路径下面的3rdParty文件夹。
(3)等待安装完成即可,最终可能会提示环境变量设置失败,这个可以通过后续手动进行设置。环境变量在Path下添加如下路径,根据实际安装路径进行调整。如果环境变量未设置正确,那么在后续运行exe程序时可能会DLL缺失相关错误。
D:\PCL 1.9.1\bin
D:\PCL 1.9.1\3rdParty\VTK\bin
D:\PCL 1.9.1\3rdParty\OpenNI2\Redist
D:\PCL 1.9.1\3rdParty\FLANN\bin
(4)将上面说的插件 pcl-1.9.1-pdb-msvc2017-win64.zip解压出来全部复制到你安装的PCL路径下(如D:\PCL 1.9.1\bin)。
2 示例程序
下面是一个pcd点云文件读取程序,示例点云下载地址为https://download.csdn.net/download/suiyingy/85129456。
'''
更多python与C++技巧、三维算法、深度学习算法总结、大模型请关注我的博客,欢迎讨论与交流:https://blog.csdn.net/suiyingy,或”乐乐感知学堂“公众号。Python三维领域专业书籍推荐:《人工智能点云处理及深度学习算法》。
'''
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
using namespace std;
int main (int argc, char** argv)
{
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
if (pcl::io::loadPCDFile<pcl::PointXYZ> ("../../rabbit.pcd", *cloud) == -1) //* 读入PCD文件
{
PCL_ERROR ("Couldn't read file example_cloud.pcd \n");
return 0;
}
std::cout << "Loaded "
<< cloud->width * cloud->height
<< " data points from rabbit.pcd. "
<< std::endl;
return 0;
}
3 程序运行
vscode一般有三种运行方式,分别为task模式、cmake模式和CMake Tools,详细介绍请参考vscode ubuntu c++运行环境配置-CSDN博客(https://blog.csdn.net/suiyingy/article/details/136540507)。这里以采用CMake Tools方式来运行,只需要配置CMakeLists.txt即可,内容如下:
cmake_minimum_required(VERSION 3.21)
project(01_readpcd)
set(CMAKE_BUILD_TYPE "Debug")
# 设置PCL库的路径(假设PCL已经安装在系统中)
find_package(PCL 1.9 REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
# 添加你的源文件
add_executable(${PROJECT_NAME} main.cpp)
# 将PCL的DLL文件拷贝到输出目录
# file(GLOB PCL_DLLS "${PCL_ROOT}/bin/*.dll")
# file(COPY ${PCL_DLLS} DESTINATION "${CMAKE_BINARY_DIR}/Debug")
message("PCL_DLL: " ${PCL_LIBRARY_DIRS})
message("PCL_DLL: " ${PCL_ROOT})
message("PCL_DLL: " ${PCL_LIBRARY_DIRS})
# 链接PCL库
target_link_libraries(${PROJECT_NAME} ${PCL_LIBRARIES})
程序运行结果如下所示。
4 注意事项
4.1 DLL缺失
采用Cmake Tools运行程序时,如果缺少DLL。程序运行不会报错,但是会正常编译生成exe,并且程序不会输出任何结果。
解决步骤:
(1)双击打开编译后的exe程序,会提示找不到的DLL文件。
(2)用搜索工具如everything(https://www.voidtools.com/zh-cn/)快速搜索电脑中相应DLL路径。
(3)将DLL路径添加到Path环境变量中。
(4)添加环境变量之后双击exe程序,看看是否还缺少其它DLL。
(5)环境变量设置好之后双击exe可以正常输出结果,但是vscode仍然无法输出,需要重启电脑,而重启vscode可能不会生效。
4.2 无法找到PCL库
使用Task模式运行程序时,我们会在c_cpp_properties.json文件中配置PCL库,示例如下所示。
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"D:/PCL 1.9.1/include/pcl-1.9",
"D:/PCL 1.9.1/3rdParty/Eigen/eigen3",
"D:/PCL 1.9.1/3rdParty/Boost/include/boost-1_68",
"D:/PCL 1.9.1/3rdParty/FLANN/include",
"D:/PCL 1.9.1/3rdParty/VTK/include/vtk-8.1",
"D:/PCL 1.9.1/3rdParty/OpenNI2/Include",
"D:/PCL 1.9.1/3rdParty/Qhull/include"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.17763.0",
"compilerPath": "C:/msys64/mingw64/bin/g++.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "windows-gcc-x64",
"configurationProvider": "ms-vscode.cmake-tools"
}
],
"version": 4
}
这个包含目录可以被vscode识别,但不能被编译环境gcc或g++识别,因此需要在tasks.json中通过args 来进行配置,并且还需要增加库包含目录。不借助cmake的情况下,单独用tasks.json比较难配置成功。这里不再进行介绍。
【版权声明】
本文为博主原创文章,未经博主允许严禁转载,我们会定期进行侵权检索。
更多python与C++技巧、三维算法、深度学习算法总结、大模型请关注我的博客,欢迎讨论与交流:https://blog.csdn.net/suiyingy,或”乐乐感知学堂“公众号。Python三维领域专业书籍推荐:《人工智能点云处理及深度学习算法》。