PCL安装与配置(PCL1.9.1+MSVC2017)

news2024/11/16 11:57:20

为了和我的VS的版本VS 2017对应,PCL下载的也是msvc_2017,PCL msvc2017最新的则是1.901版本,我们就以PCL 1.9.1为例了。(如果你的vs是2019和2022,一定要注意PCL的版本)。

一、下载PCL

我们打开PCL的github下载地址(点击下载),下载我们需要的版本,如下图:

我们统一也下载64位的版本,下载PCL-1.9.1-AllInOne-msvc2017-win64.exe和pcl-1.9.1-pdb-msvc2017-win64.zip

二、PCL的安装

点击PCL-1.9.1-AllInOne-msvc2017-win64.exe,通过管理员权限打开:

点击“下一步”

点击“我接受”.

选择第二个:Add PCL to the system PATH for all users,然后,点击 下一步。

弹出安装位置,注意此处PCL后面有个空格

我自己选择了自定义的安装路径

安装注意:不要带中文和空格

点击下一步

勾选所有的,然后点击 安装

正在进行安装

安装过程中会跳出如下OpenNI安装界面

选择路径/3rdParty/OpenNI2/安装(为了之后方便配置环境)。

OpenNI安装完成。

PCL安装完成。

安装完成后,我们在安装文件夹下可以看到安装的内容:

安装完成之后,我们打开环境变量,可以看到环境变量变化如下:

安装完成后,解压下载的pcl-1.11.0-pdb-msvc2017-win64.zip文件。

把解压的内容拷贝到pcl安装路径下的bin文件夹内:

三、VTK替换

在我们安装文件夹内,可以看到有VTK的存在

但是PCL 安装目录下的 VTK 并不完整,其中就少了与 Qt 相关的模块,而这些模块是 CloudViewer 编译运行所需要的(如QVTKWidget)。所以我们需要手动编译 VTK,并替换 PCL/3rdParty下的 VTK。

我们把把编译好的VTK拷贝替换PCL安装的这个。

VTK的编译可以参考:VTK8.2.0编译(Qt 5.14.2+VS2017)

四、设置环境变量

先在新建一个变量PCL_ROOT,变量值为我们pcl的安装目录:

然后双击Path中增加环境变量:

然后重启电脑。

五、使用Qt Creator创建点云程序

1、使用Qt 创建一个MSVC 64位的程序,命名pcltest001,然后在pro文件中配置pcl相关的内容:

INCLUDEPATH += D:/Soft_Install/PCL1.9.1/3rdParty/Boost/include/boost-1_68 \

INCLUDEPATH += D:/Soft_Install/PCL1.9.1/3rdParty/Eigen/eigen3 \

INCLUDEPATH += D:/Soft_Install/PCL1.9.1/3rdParty/FLANN/include/flann \

INCLUDEPATH += D:/Soft_Install/PCL1.9.1/3rdParty/OpenNI2/Include \

INCLUDEPATH += D:/Soft_Install/PCL1.9.1/3rdParty/Qhull/include \

INCLUDEPATH += D:/Soft_Install/PCL1.9.1/3rdParty/VTK/include/vtk-8.2 \

INCLUDEPATH += D:/Soft_Install/PCL1.9.1/include/pcl-1.9/pcl \

INCLUDEPATH += D:/Soft_Install/PCL1.9.1/include/pcl-1.9 \

LIBS += -LD:/Soft_Install/PCL1.9.1/lib \
        -lpcl_common_release \
        -lpcl_features_release \
        -lpcl_filters_release \
        -lpcl_io_release \
        -lpcl_io_ply_release \
        -lpcl_kdtree_release \
        -lpcl_keypoints_release \
        -lpcl_ml_release \
        -lpcl_octree_release \
        -lpcl_outofcore_release \
        -lpcl_people_release \
        -lpcl_recognition_release \
        -lpcl_registration_release \
        -lpcl_sample_consensus_release \
        -lpcl_search_release \
        -lpcl_segmentation_release \
        -lpcl_stereo_release \
        -lpcl_surface_release \
        -lpcl_tracking_release \
        -lpcl_visualization_release

LIBS += -LD:/Soft_Install/PCL1.9.1/3rdParty/Boost/lib/ \
        -llibboost_atomic-vc141-mt-x64-1_68\
        -llibboost_bzip2-vc141-mt-x64-1_68\
        -llibboost_chrono-vc141-mt-x64-1_68\
        -llibboost_container-vc141-mt-x64-1_68\
        -llibboost_context-vc141-mt-x64-1_68\
        -llibboost_contract-vc141-mt-x64-1_68\
        -llibboost_coroutine-vc141-mt-x64-1_68\
        -llibboost_date_time-vc141-mt-x64-1_68\
        -llibboost_exception-vc141-mt-x64-1_68\
        -llibboost_fiber-vc141-mt-x64-1_68\
        -llibboost_filesystem-vc141-mt-x64-1_68\
        -llibboost_graph-vc141-mt-x64-1_68\
        -llibboost_graph_parallel-vc141-mt-x64-1_68\
        -llibboost_iostreams-vc141-mt-x64-1_68\
        -llibboost_locale-vc141-mt-x64-1_68\
        -llibboost_log-vc141-mt-x64-1_68\
        -llibboost_log_setup-vc141-mt-x64-1_68\
        -llibboost_math_c99-vc141-mt-x64-1_68\
        -llibboost_math_c99f-vc141-mt-x64-1_68\
        -llibboost_math_c99l-vc141-mt-x64-1_68\
        -llibboost_math_tr1-vc141-mt-x64-1_68\
        -llibboost_math_tr1f-vc141-mt-x64-1_68\
        -llibboost_math_tr1l-vc141-mt-x64-1_68\
        -llibboost_mpi-vc141-mt-x64-1_68\
        -llibboost_numpy27-vc141-mt-x64-1_68\
        -llibboost_numpy37-vc141-mt-x64-1_68\
        -llibboost_prg_exec_monitor-vc141-mt-x64-1_68\
        -llibboost_program_options-vc141-mt-x64-1_68\
        -llibboost_python27-vc141-mt-x64-1_68\
        -llibboost_python37-vc141-mt-x64-1_68\
        -llibboost_random-vc141-mt-x64-1_68\
        -llibboost_regex-vc141-mt-x64-1_68\
        -llibboost_serialization-vc141-mt-x64-1_68\
        -llibboost_signals-vc141-mt-x64-1_68\
        -llibboost_stacktrace_noop-vc141-mt-x64-1_68\
        -llibboost_stacktrace_windbg-vc141-mt-x64-1_68\
        -llibboost_stacktrace_windbg_cached-vc141-mt-x64-1_68\
        -llibboost_system-vc141-mt-x64-1_68\
        -llibboost_test_exec_monitor-vc141-mt-x64-1_68\
        -llibboost_thread-vc141-mt-x64-1_68\
        -llibboost_timer-vc141-mt-x64-1_68\
        -llibboost_type_erasure-vc141-mt-x64-1_68\
        -llibboost_unit_test_framework-vc141-mt-x64-1_68\
        -llibboost_wave-vc141-mt-x64-1_68\
        -llibboost_wserialization-vc141-mt-x64-1_68\
        -llibboost_zlib-vc141-mt-x64-1_68

LIBS += -LD:/Soft_Install/PCL1.9.1/3rdParty/FLANN/lib\
        -lflann\
        -lflann_cpp\
        -lflann_cpp_s\
        -lflann_s\


LIBS += -LD:/Soft_Install/PCL1.9.1/3rdParty/OpenNI2/Lib\
        -lOpenNI2

LIBS += -LD:/Soft_Install/PCL1.9.1/3rdParty/Qhull/lib\
        -lqhull\
        -lqhullcpp\
        -lqhullstatic\
        -lqhullstatic_r\
        -lqhull_p\
        -lqhull_r

LIBS += -LD:/Soft_Install/PCL1.9.1/3rdParty/VTK/lib \
        -lvtkChartsCore-8.2 \
        -lvtkCommonColor-8.2 \
        -lvtkCommonComputationalGeometry-8.2 \
        -lvtkCommonCore-8.2 \
        -lvtkCommonDataModel-8.2 \
        -lvtkCommonExecutionModel-8.2 \
        -lvtkCommonMath-8.2 \
        -lvtkCommonMisc-8.2 \
        -lvtkCommonSystem-8.2 \
        -lvtkCommonTransforms-8.2 \
        -lvtkDICOMParser-8.2 \
        -lvtkDomainsChemistry-8.2 \
        -lvtkDomainsChemistryOpenGL2-8.2 \
        -lvtkdoubleconversion-8.2 \
        -lvtkexodusII-8.2 \
        -lvtkexpat-8.2 \
        -lvtkFiltersAMR-8.2 \
        -lvtkFiltersCore-8.2 \
        -lvtkFiltersExtraction-8.2 \
        -lvtkFiltersFlowPaths-8.2 \
        -lvtkFiltersGeneral-8.2 \
        -lvtkFiltersGeneric-8.2 \
        -lvtkFiltersGeometry-8.2 \
        -lvtkFiltersHybrid-8.2 \
        -lvtkFiltersHyperTree-8.2 \
        -lvtkFiltersImaging-8.2 \
        -lvtkFiltersModeling-8.2 \
        -lvtkFiltersParallel-8.2 \
        -lvtkFiltersParallelImaging-8.2 \
        -lvtkFiltersPoints-8.2 \
        -lvtkFiltersProgrammable-8.2 \
        -lvtkFiltersSelection-8.2 \
        -lvtkFiltersSMP-8.2 \
        -lvtkFiltersSources-8.2 \
        -lvtkFiltersStatistics-8.2 \
        -lvtkFiltersTexture-8.2 \
        -lvtkFiltersTopology-8.2 \
        -lvtkFiltersVerdict-8.2 \
        -lvtkfreetype-8.2 \
        -lvtkGeovisCore-8.2 \
        -lvtkgl2ps-8.2 \
        -lvtkglew-8.2 \
        -lvtkGUISupportQt-8.2 \
        -lvtkGUISupportQtOpenGL-8.2 \
        -lvtkGUISupportQtSQL-8.2 \
        -lvtkhdf5-8.2 \
        -lvtkhdf5_hl-8.2 \
        -lvtkImagingColor-8.2 \
        -lvtkImagingCore-8.2 \
        -lvtkImagingFourier-8.2 \
        -lvtkImagingGeneral-8.2 \
        -lvtkImagingHybrid-8.2 \
        -lvtkImagingMath-8.2 \
        -lvtkImagingMorphological-8.2 \
        -lvtkImagingSources-8.2 \
        -lvtkImagingStatistics-8.2 \
        -lvtkImagingStencil-8.2 \
        -lvtkInfovisCore-8.2 \
        -lvtkInfovisLayout-8.2 \
        -lvtkInteractionImage-8.2 \
        -lvtkInteractionStyle-8.2 \
        -lvtkInteractionWidgets-8.2 \
        -lvtkIOAMR-8.2 \
        -lvtkIOAsynchronous-8.2 \
        -lvtkIOCityGML-8.2 \
        -lvtkIOCore-8.2 \
        -lvtkIOEnSight-8.2 \
        -lvtkIOExodus-8.2 \
        -lvtkIOExport-8.2 \
        -lvtkIOExportOpenGL2-8.2 \
        -lvtkIOExportPDF-8.2 \
        -lvtkIOGeometry-8.2 \
        -lvtkIOImage-8.2 \
        -lvtkIOImport-8.2 \
        -lvtkIOInfovis-8.2 \
        -lvtkIOLegacy-8.2 \
        -lvtkIOLSDyna-8.2 \
        -lvtkIOMINC-8.2 \
        -lvtkIOMovie-8.2 \
        -lvtkIONetCDF-8.2 \
        -lvtkIOParallel-8.2 \
        -lvtkIOParallelXML-8.2 \
        -lvtkIOPLY-8.2 \
        -lvtkIOSegY-8.2 \
        -lvtkIOSQL-8.2 \
        -lvtkIOTecplotTable-8.2 \
        -lvtkIOVeraOut-8.2 \
        -lvtkIOVideo-8.2 \
        -lvtkIOXML-8.2 \
        -lvtkIOXMLParser-8.2 \
        -lvtkjpeg-8.2 \
        -lvtkjsoncpp-8.2 \
        -lvtklibharu-8.2 \
        -lvtklibxml2-8.2 \
        -lvtkLocalExample-8.2 \
        -lvtklz4-8.2 \
        -lvtklzma-8.2 \
        -lvtkmetaio-8.2 \
        -lvtkNetCDF-8.2 \
        -lvtkogg-8.2 \
        -lvtkParallelCore-8.2 \
        -lvtkpng-8.2 \
        -lvtkproj-8.2 \
        -lvtkpugixml-8.2 \
        -lvtkRenderingAnnotation-8.2 \
        -lvtkRenderingContext2D-8.2 \
        -lvtkRenderingContextOpenGL2-8.2 \
        -lvtkRenderingCore-8.2 \
        -lvtkRenderingFreeType-8.2 \
        -lvtkRenderingGL2PSOpenGL2-8.2 \
        -lvtkRenderingImage-8.2 \
        -lvtkRenderingLabel-8.2 \
        -lvtkRenderingLOD-8.2 \
        -lvtkRenderingOpenGL2-8.2 \
        -lvtkRenderingQt-8.2 \
        -lvtkRenderingVolume-8.2 \
        -lvtkRenderingVolumeOpenGL2-8.2 \
        -lvtksqlite-8.2 \
        -lvtksys-8.2 \
        -lvtktheora-8.2 \
        -lvtktiff-8.2 \
        -lvtkverdict-8.2 \
        -lvtkViewsContext2D-8.2 \
        -lvtkViewsCore-8.2 \
        -lvtkViewsInfovis-8.2 \
        -lvtkViewsQt-8.2 \
        -lvtkzlib-8.2

main函数中输入下面的code:

#include "mainwindow.h"

#include <QApplication>

#include <iostream> //标准输入输出流
#include<pcl/io/io.h>
#include<pcl/io/pcd_io.h>
#include<pcl/io/ply_io.h>
#include <pcl/point_types.h> //PCL对各种格式的点的支持头文件
#include <pcl/visualization/cloud_viewer.h>//点云查看窗口头文件
#include <pcl/point_cloud.h>
#include <QDebug>
#include <QDir>

typedef pcl::PointXYZ PointT;

using namespace std;

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
//    MainWindow w;
//    w.show();

    std::cout<<"start"<<std::endl;
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);


    QString file = "E:/Project_Data/PCL_Data/rabbit.pcd";
    file = "E:/My_Soft/PCL/PCL_1.9.1/rabbit.pcd";



    // 读取点云,失败返回-1
    if (pcl::io::loadPCDFile<PointT>(file.toStdString(), *cloud) == -1)
    {
        PCL_ERROR("couldn't read file\n");
        std::cout<<"error"<<std::endl;
        return (-1);
    }

    std::cout << cloud->points.size() << std::endl;
    // 点云可视化
    pcl::visualization::CloudViewer viewer("Cloud Viewer");
    viewer.showCloud(cloud);

    // 循环判断是否退出
    while (!viewer.wasStopped()) {
        // 后续也可以在这里对点云做很多处理
    }


    std::cout<<"end"<<std::endl;
    return a.exec();
}

报错的处理:

D:\Soft_Install\PCL1.9.1\include\pcl-1.9\pcl\visualization\impl\pcl_visualizer.hpp:1545: error: C2039: “ImmediateModeRenderingOff”: 不是“vtkMapper”的成员

重新编译运行:

我把rabbit文件,放到了百度云盘中,大家可以下载

链接:https://pan.baidu.com/s/11U9jmCkaSShy3ZpvYWAN3g 
提取码:mvov

但是,美中不足的是会弹出Generic Waning框:

我尝试了网络上网友提供的很多方法,也无法把这个警告框去除掉。中间我也重新使用VTK8.2.0替换了,也不行。VTK8.1.0我也重新编译了,还是解决不了。

所以,我就重新安装了PCL1.8.1版本。

不知道你安装这个1.9.1会不会也会出现,欢迎你留言我们交流。

文章未经授权,禁止转载!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1984139.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GDB调试器

GDB调试器 GDB的主要功能 常见命令 3、实战 1、生成能调试的执行文件&#xff08;一定要加-g&#xff09; 第一个是不能调试的 第二个这样加了-g才能进行调试 如果没加-g 执行gdb 执行文件&#xff08;会报下面这个 &#xff09; 像这样才是正常的 执行 gdb a_yes_g 这…

SSM计算机组成原理课程平台-计算机毕设定制-附项目源码(可白嫖)50168

摘 要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#xff0c;科学化的管理&#xff0c;使信息存…

金融行业到底该选择什么样的FTP替代方案?

2018年以来&#xff0c;受“华为、中兴事件”影响&#xff0c;我国科技尤其是上游核心技术受制于人的现状对我 国经济发展提出了严峻考验。在全球产业从工业经济向数字经济升级的关键时期&#xff0c;中国明确 “数字中国”建设战略&#xff0c; 抢占数字经济产业链制高点。 在…

Python开发工具PyCharm入门指南 - 用户界面主题更改

JetBrains PyCharm是一种Python IDE&#xff0c;其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。此外&#xff0c;该IDE提供了一些高级功能&#xff0c;以用于Django框架下的专业Web开发。 界面主题定义了窗口、对话框、按钮和用户界面的所有可视元素的外观…

vscode开发avalonia

安装 安装.net 8 安装avalonia模板 dotnet new install Avalonia.Templates创建项目 dotnet new avalonia.app -o GetStartedApp安装c# dev kit插件和Avalonia for VSCode Community dotnet run运行 修改代码 MainWindow.axaml <Window xmlns"https://githu…

企业层面经济政策不确定性感知数据(2001-2023年)

1.指标介绍 企业经济政策不确定性感知指的是企业在面对政府经济政策变动时所感受到的风险和不确定性程度&#xff0c;这种感知会影响企业的投资决策、生产计划和市场策略 文章根据上市公司披露的MD&A文本&#xff0c;提取指标衡量企业个体面临的经济政策不确定性。 2.参…

了解线性回归、岭回归和套索回归

逐步对 Linear、Ridge 和 Lasso 回归进行数学理解。 ​ LASSO&#xff08;左&#xff09;和岭回归&#xff08;右&#xff09;的约束区域 一、说明 在本文中&#xff0c;我们将深入探讨机器学习中两种基本正则化技术的基础和应用&#xff1a;Ridge 回归和 Lasso 回归。这些方…

脊髓损伤小伙伴的活力重启秘籍! 让我们一起动起来,拥抱不一样的精彩生活✨

Hey小伙伴们~&#x1f44b; 今天咱们来聊聊一个超级重要又温暖的话题——脊髓损伤后的锻炼大法来啦&#xff01;&#x1f389; 记住&#xff0c;无论遇到什么挑战&#xff0c;我们都要像打不死的小强一样&#xff0c;活力满满地面对每一天&#xff01;&#x1f4aa; 首先&#…

基础进阶-搭建pxe网络安装环境实现服务器自动部署

目录 原理解释 ​编辑 开机界面解释 搭建步骤 下载环境需要用到的基本程序 查看帮助 帮助内容解释 环境搭建 修改 DHCP 修改 default 文件 测试 原理解释 开机界面解释 在开机界面中&#xff0c;圈起来的部分显示的就是光盘&#xff0c;我们需要将光盘转换成网络的 在…

.NET内网实战:模拟Installer关闭Defender

01基本介绍 02编码实现 原理上通过Windows API函数将当前进程的权限提升至TrustedInstaller&#xff0c;从而实现了对Windows Defender服务的控制。通常可以利用Windows API中的OpenSCManager、OpenProcessToken、ImpersonateLoggedOnUser以及ControlService等函数协同工作&am…

Modbus-Ascii详解

目录 Modbus-Ascii详解 Modbus-Ascii帧结构 LRC效验 将数据字节转成ASCII 将返回帧转为数据字节 Modbus-Ascii的实现 使用NModbus4实现Modbus-Ascii 实例 Modbus-Ascii详解 Modbus ASCII是一种将二进制数据转换为可打印的ASCII字符的通信协议&#xff0c;‌每个8位数据需要两…

WPF学习(4)- VirtualizingStackPanel (虚拟化元素)+Canvas控件(绝对布局)

VirtualizingStackPanel虚拟化元素 VirtualizingStackPanel 类&#xff08;虚拟化元素&#xff09;和StackPanel 类在用法上几乎差不多。其作用是在水平或垂直的一行中排列并显示内容。它继承于一个叫VirtualizingPanel的抽象类&#xff0c;而这个VirtualizingPanel抽象类继承…

AI基础架构-NVLink 技术详解

AI Infra 基础知识 - NVLink 入门 NVLink&#xff0c;一种专有互连硬件&#xff0c;实现Nvidia GPU与CPU之间的高效、一致数据和控制传输&#xff0c;提升多GPU系统性能。 概述 NVLink 于 2014 年初发布&#xff0c;旨在作为 PCI Express 的替代解决方案&#xff0c;具有更…

Java零基础之多线程篇:线程同步

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

Java13.0标准之重要特性及用法实例(二十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列…

【第三版 系统集成项目管理工程师】第9章 项目管理概论

持续更新。。。。。。。。。。。。。。。 【第三版】第九章 项目管理概论 9.1 PMBOK的发展9.2 项目基本要素9.2.1项目基础 P3041.独特的产品、服务或成果-P3042.临时性工作-P3043.项目驱动变更-P3054.项目创造业务价值-P3055.项目启动背景-P306 9.2.2项目管理 P3069.2.2 项目管…

AQS的ReentrantLock源码

什么是AQS&#xff08;全称AbstractQueuedSynchronizer&#xff09; 代表&#xff1a;重入锁、独占锁/共享锁、公平锁/非公平锁 是JUC包中线程阻塞、阻塞队列、唤醒、尝试获取锁的一个框架 AbstractQueuedSynchronizer是全称&#xff0c;是一个模板模式&#xff0c;一些线程…

深入理解Java的内存管理机制

文章目录 1. 程序计数器 (Program Counter Register)2. Java虚拟机栈 (Java Virtual Machine Stack)3. 本地方法栈 (Native Method Stack)4. 堆 (Heap)a. 年轻代 (Young Generation)b. 老年代 (Old Generation) 5. 方法区 (Method Area)6. 运行时常量池 (Runtime Constant Pool…

magic-api相关应用与配置

目录 项目启动 工具&#xff1a;IDEA 运行项目 关于配置 项目启动 工具&#xff1a;IDEA 新建——》项目——》导入——》运行 运行项目 http://localhost:9999/magic/web/index.htmlhttp://localhost:9999/magic/web/index.html 关于配置 配置多数据源 在线配置多数据…

git版本控制的底层实现

目录 前言 核心概念串讲 底层存储形式探测 本地仓库的详细解析 提交与分支的深入解析 几个问题的深入探讨 前言 Git的重要性 Git是一个开源的版本控制工具&#xff0c;广泛用于编程开发领域。它极大地提高了研发团队的开发协作效率。对于开发者来说&#xff0c;Git是一个…