PCL1.11.0下载安装(Windows)

PCL1.11.0下载安装(Windows)

PCL安装需要的几个模块如下图所示:

一、PCL1.11.0下载

PCL以1.11.0版本为例,打开下载连接(PCL下载)

下载PCL-1.11.0-AllInOne-msvc2019-win64.exepcl-1.11.0-pdb-msvc2019-win64.zip

二、PCL安装

点击PCL-1.11.0-AllInOne-msvc2019-win64.exe文件,通过管理员权限,开始安装。

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

三、安装OpenNI

在3rdParty\OpenNI2文件夹下安装OpenNI-Windows-x64-2.2.msi。

移除完成后,我们重新安装,安装路径选择pcl按章的目录:D:\Soft_Install\pcl1_11_0\PCL 1.11.0\3rdParty\OpenNI2\

可以看到安装之后的内容

四、添加环境变量

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

增加了四个环境变量。

五、拷贝pdb文件

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

解压的内容为:

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


 

六、VTK替换

VTK8.2.0的编译(参见:VTK8.2.0编译(Qt 5.14.2+VS2017)),如果你用其他的vs编译的过程类似。

我们把编译好的VTK内容,如下所示

替换掉PCL中安装的VTK

七、注意事项

注意:

在把上面的步骤执行完成后,我们还需要操作一步,如果不操作跳过我这一步,在最后Qt Creator在调用pcl的时候会报错。可以先看我的报错:

boost库和Eigen库加载的不识别,究其原因是我在pro文件中使用INCLUDEPATH添加头文件时没有识别,所以问题就出现在pcl的安装路径上,看下面的图,PCL 1.11.0中间有个空格。

所以,我们把这个空格删掉就可以了。

设置环境变量

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

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

然后我们新建以下的环境变量

%PCL_ROOT%\bin
%PCL_ROOT%\3rdParty\FLANN\bin
%PCL_ROOT%\3rdParty\VTK\bin
%PCL_ROOT%\3rdParty\Qhull\bin
%PCL_ROOT%\3rdParty\OpenNI2\Tools

%OPENNI2_REDIST64%

%OPENNI2_LIB64%

%OPENNI2_INCLUDE64%

然后重启电脑。

八、创建一个点云项目

使用Qt Creator创建点云程序

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


INCLUDEPATH += D:/Soft_Install/pcl1_11_0/PCL1.11.0/3rdParty/Boost/include/boost-1_73 \INCLUDEPATH += D:/Soft_Install/pcl1_11_0/PCL1.11.0/3rdParty/Eigen/eigen3 \INCLUDEPATH += D:/Soft_Install/pcl1_11_0/PCL1.11.0/3rdParty/FLANN/include/flann \INCLUDEPATH += D:/Soft_Install/pcl1_11_0/PCL1.11.0/3rdParty/OpenNI2/Include \INCLUDEPATH += D:/Soft_Install/pcl1_11_0/PCL1.11.0/3rdParty/Qhull/include \INCLUDEPATH += D:/Soft_Install/pcl1_11_0/PCL1.11.0/3rdParty/VTK/include/vtk-8.2 \INCLUDEPATH += D:/Soft_Install/pcl1_11_0/PCL1.11.0/include/pcl-1.11/pcl \INCLUDEPATH += D:/Soft_Install/pcl1_11_0/PCL1.11.0/include/pcl-1.11 \LIBS += -LD:/Soft_Install/pcl1_11_0/PCL1.11.0/lib \-lpcl_common \-lpcl_features \-lpcl_filters \-lpcl_io \-lpcl_io_ply \-lpcl_kdtree \-lpcl_keypoints \-lpcl_ml \-lpcl_octree \-lpcl_outofcore \-lpcl_people \-lpcl_recognition \-lpcl_registration \-lpcl_sample_consensus \-lpcl_search \-lpcl_segmentation \-lpcl_stereo \-lpcl_surface \-lpcl_tracking \-lpcl_visualizationLIBS += -LD:/Soft_Install/pcl1_11_0/PCL1.11.0/3rdParty/Boost/lib/ \-llibboost_atomic-vc142-mt-x64-1_73\-llibboost_bzip2-vc142-mt-x64-1_73\-llibboost_chrono-vc142-mt-x64-1_73\-llibboost_container-vc142-mt-x64-1_73\-llibboost_context-vc142-mt-x64-1_73\-llibboost_contract-vc142-mt-x64-1_73\-llibboost_coroutine-vc142-mt-x64-1_73\-llibboost_date_time-vc142-mt-x64-1_73\-llibboost_exception-vc142-mt-x64-1_73\-llibboost_fiber-vc142-mt-x64-1_73\-llibboost_filesystem-vc142-mt-x64-1_73\-llibboost_graph-vc142-mt-x64-1_73\-llibboost_graph_parallel-vc142-mt-x64-1_73\-llibboost_iostreams-vc142-mt-x64-1_73\-llibboost_locale-vc142-mt-x64-1_73\-llibboost_log-vc142-mt-x64-1_73\-llibboost_log_setup-vc142-mt-x64-1_73\-llibboost_math_c99-vc142-mt-x64-1_73\-llibboost_math_c99f-vc142-mt-x64-1_73\-llibboost_math_c99l-vc142-mt-x64-1_73\-llibboost_math_tr1-vc142-mt-x64-1_73\-llibboost_math_tr1f-vc142-mt-x64-1_73\-llibboost_math_tr1l-vc142-mt-x64-1_73\-llibboost_mpi-vc142-mt-x64-1_73\-llibboost_nowide-vc142-mt-x64-1_73\-llibboost_numpy38-vc142-mt-x64-1_73\-llibboost_prg_exec_monitor-vc142-mt-x64-1_73\-llibboost_program_options-vc142-mt-x64-1_73\-llibboost_python38-vc142-mt-x64-1_73\-llibboost_random-vc142-mt-x64-1_73\-llibboost_regex-vc142-mt-x64-1_73\-llibboost_serialization-vc142-mt-x64-1_73\-llibboost_stacktrace_noop-vc142-mt-x64-1_73\-llibboost_stacktrace_windbg-vc142-mt-x64-1_73\-llibboost_stacktrace_windbg_cached-vc142-mt-x64-1_73\-llibboost_system-vc142-mt-x64-1_73\-llibboost_test_exec_monitor-vc142-mt-x64-1_73\-llibboost_thread-vc142-mt-x64-1_73\-llibboost_timer-vc142-mt-x64-1_73\-llibboost_type_erasure-vc142-mt-x64-1_73\-llibboost_unit_test_framework-vc142-mt-x64-1_73\-llibboost_wave-vc142-mt-x64-1_73\-llibboost_wserialization-vc142-mt-x64-1_73\-llibboost_zlib-vc142-mt-x64-1_73LIBS += -LD:/Soft_Install/pcl1_11_0/PCL1.11.0/3rdParty/FLANN/lib\-lflann\-lflann_cpp\-lflann_cpp_s\-lflann_s\LIBS += -LD:/Soft_Install/pcl1_11_0/PCL1.11.0/3rdParty/OpenNI2/Lib\-lOpenNI2LIBS += -LD:/Soft_Install/pcl1_11_0/PCL1.11.0/3rdParty/Qhull/lib\-lqhull\-lqhullcpp\-lqhullstatic\-lqhullstatic_r\-lqhull_p\-lqhull_rLIBS += -LD:/Soft_Install/pcl1_11_0/PCL1.11.0/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

然后,在mian文件中编程:

#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";// 读取点云,失败返回-1if (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();
}

最后,以release模式编译我们的项目,因为我的vtk只编译了releas的,所以这个项目编译了release的。顺便把所需要的dll都拷贝到项目release文件夹中。

运行程序,如下图所示:

我们的PCL配置,到这里就结束了。

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3 列表自动滚动播放(表头固定、列表内容自动滚动播放)+ vue3-seamless-scroll - 附完整示例

vue3-seamless-scroll&#xff1a;Vue3.0 无缝滚动组件&#xff0c;支持Vite2.0&#xff0c;支持服务端打包 目前组件支持上下左右无缝滚动&#xff0c;单步滚动&#xff0c;并且支持复杂图标的无缝滚动&#xff0c;目前组件支持平台与Vue3.0支持平台一致。 目录 效果 一、介绍…

腾讯云AI代码助手评测:如何智能高效完成Go语言Web项目开发

腾讯云AI代码助手评测&#xff1a;如何智能高效完成Go语言Web项目开发 &#x1f680; 文章目录 腾讯云AI代码助手评测&#xff1a;如何智能高效完成Go语言Web项目开发 &#x1f680;背景引言开发环境介绍腾讯云AI代码助手使用实例1. 代码补全2. 技术对话3. 代码优化4. 规范代码…

(计算机网络)物理层

目录 一.基本概念 二.基本术语 三.码元 四.多路复用技术 一.基本概念 1. 2. 3. 4. 5. 6. 7. 8. 9. 二.基本术语 1. 2. 3.早期--公用的电话网传输数据&#xff0c;网络上传的是模拟信号&#xff0c;调制解调器--将数字信号转化成模拟信号&#xff0c;最后&#xff0c;调制解…

NSSCTF-GDOUCTF 2023新生赛

[GDOUCTF 2023]hate eat snake 考察&#xff1a;js代码审计 打开题目&#xff0c;发现需要坚持60秒&#xff0c;那么简单的一个思路就是修改得分的变量>60即可 办法1&#xff1a;修改变量 右键查看源代码&#xff0c;之后发现有一个snake.js的文件&#xff0c;ctrlf搜索i…

程序设计基础(c语言)_补充_1

1、编程应用双层循环输出九九乘法表 #include <stdio.h> #include <stdlib.h> int main() {int i,j;for(i1;i<9;i){for(j1;j<i;j)if(ji)printf("%d*%d%d",j,i,j*i);elseprintf("%d*%d%-2d ",j,i,j*i);printf("\n");}return 0…

DS18B20数字温度传感器操作解析

文章目录 引言特点工作原理引脚说明配置寄存器温度寄存器时序初始化时序写时序读时序 引言 DS18B20 是一种广泛使用的数字温度传感器&#xff0c;具有高精度和易用性。是Dallas Semiconductor公司&#xff08;现为Maxim Integrated公司&#xff09;生产的单总线数字温度传感器…

关爱提示器-不要久坐

关爱提示器-不要久坐 最近身体不适腰疼脖子疼的&#xff0c;去医院检查&#xff0c;大夫提示注意身体不要久坐多运动等等之类的&#xff0c;哎&#xff0c;生活所迫&#xff0c;披星戴月兢兢业业的&#xff0c;到头来还要被批判躺平不努力。哎&#xff0c;先关爱自己吧&#xf…

Java | Leetcode Java题解之第322题零钱兑换

题目&#xff1a; 题解&#xff1a; public class Solution {public int coinChange(int[] coins, int amount) {int max amount 1;int[] dp new int[amount 1];Arrays.fill(dp, max);dp[0] 0;for (int i 1; i < amount; i) {for (int j 0; j < coins.length; j)…

Dynamo修改共享参数绑定的分组——群问题整理005

Hello大家好!我是九哥~ 今天继续给大家分享一些短平快的小教程,是来自群里面的问题。 问题005:Dynamo修改共享参数绑定的分组 今天看到群里询问如何修改参数所在的分组,查了下API,项目参数是不行的,不过共享参数是允许ReInsert()的,那么就好办了。 然后在Document下…

JavaEE 第4节 线程安全问题

小贴士&#xff1a; 本节题目所述的主题其实非常的庞大&#xff0c;如果要细讲起来&#xff0c;一篇博客远远不够&#xff0c;本篇博客只会每个方面的内容做一个简要描述&#xff0c;详细的内容在后续同专栏博客中都会涉及到的&#xff0c;如果有需要可以一步到本专栏的其他博客…

python运行js之execjs基本使用

python运行js之execjs基本使用 现在大部分网站都使用JS加密和JS加载的情况&#xff0c;数据并不能直接被抓取出来&#xff0c;这时候就需要使用第三方类库来执行JS语句。 官网&#xff1a;https://pypi.org/project/PyExecJS/ 使用前提&#xff1a;电脑需要安装 Node.js 一、安…

最新口型同步技术EchoMimic部署

EchoMimic是由蚂蚁集团推出的一个 AI 驱动的口型同步技术项目&#xff0c;能够通过人像面部特征和音频来帮助人物“对口型”&#xff0c;生成逼真的动态肖像视频。 EchoMimic的技术亮点在于其创新的动画生成方法&#xff0c;它不仅能够通过音频和面部关键点单独驱动图像动画&a…

【星闪开发连载】WS63E 星闪开发板和hi3861开发板的对比

此次星闪开发者体验官活动使用的开发板都是NearLink_DK_WS63E开发板&#xff0c;它和NearLink_DK_WS63开发板的区别在于具有雷达感知功能。从开发板的照片也可以看到WS63E有一个雷达天线接口。 我们把WS63E开发板和hi3861开发板的功能做了简单的对比&#xff0c;见下表。 参数…

用户看广告获取密码访问网页内容流量主模式源码

简介&#xff1a; 全开源付费进群流量主模式&#xff0c;用户看广告获取密码访问网页内容&#xff0c;网站生成内容&#xff0c;用户需要浏览内容跳转至小程序&#xff0c;观看广告后获取密码&#xff0c;输入密码查看网页内容。 与之前得9.9付费进群区别就是内容体现在了网页…

iPhone苹果手机Safari浏览器怎么收藏网页?

iPhone苹果手机Safari浏览器怎么收藏网页? 1、iPhone苹果手机上找到并打开Safari浏览器&#xff0c;并访问要收藏的网页&#xff1b; 2、打开网页后&#xff0c;点击导航上的更多功能&#xff1b; 3、在更多里&#xff0c;找到并点击添加到个人收藏&#xff0c;完成储存即可添…

JavaSE面试篇章——一文干破Java集合

文章目录 Java集合——一文干破集合一、集合的理解和好处1.1 数组1.2 集合 二、集合的框架体系三、Collection接口和常用方法3.1 Collection接口实现类的特点3.2 Collection接口遍历元素方式1-使用Iterator(迭代器)3.2.1 基本介绍3.2.2 迭代器的执行原理3.2.3 Iterator接口的方…

java基础 之 equals和==的区别

文章目录 浅谈“”特点比较基本类型比较引用类型 浅谈“equals”背景和使用重写equals自定义类为什么需要重写equals方法 总结附录代码及文章推荐 前言&#xff1a; 1、8大基本数据类型&#xff0c;它们的值直接代表了某种数据&#xff0c;不是对象的实例&#xff0c;不能使用n…

关于企微群聊天工具功能的开发---PHP+JS+CSS+layui (手把手教学)

文章目录 前言准备工作PHP代码示例前端代码示例 主要是js踩的小坑&笔记最终达成的效果总结 前言 公司要求开发企微群聊天工具。首先一个客户一个群&#xff0c;其余群成员都是公司销售、设计师、工长、售后等人员。要求开发一个群聊天工具&#xff0c;工长点击进来以后就可…

ReentrantLock源码分析

文章目录 一、AQS1、state属性2、等待队列3、条件变量 二、ReentrantLock1、非公平锁实现原理1.1 获取锁1.2 释放锁1.3 可重入原理1.4 可打断原理不可打断可打断 1.5 公平锁实现原理1.6 条件变量原理awaitsignal 一、AQS AQS全称是 AbstractQueuedSynchronizer&#xff0c;是阻…

Python面试宝典第27题:全排列

题目 给定一个不含重复数字的数组nums&#xff0c;返回其所有可能的全排列 。备注&#xff1a;可以按任意顺序返回答案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]] 示例 2&#xff1a; 输…