Qt PCL学习(一):环境搭建
参考
- (QT配置pcl)PCL1.12.1+QT5.15.2+vs2019+cmake3.22.4+vtk9.1.0
- visual studio2019+Qt5.15.2+PCL1.12.1+vtk9.1.0+cmake3.22.2
本博客用到的所有资源
- 版本一览:Visual Studio 2019 + Qt 5.15.2 + PCL 1.12.1 + VTK 9.1.0
- https://pan.baidu.com/s/1xW7xCdR5QzgS1_d1NeIZpQ?pwd=0000
1. Visual Studio 2019 安装
Visual Studio 2019 官方下载地址
- 双击下载好的 vs_enterprise__663473144.1633489885.exe 文件,勾选下述选项安装即可

2. Qt 5.15.2 安装
2.1 Qt 在线安装
-
Qt 在线安装文件下载:qt-unified-windows-x86-4.3.0-1-online.exe

-
双击下载好的 qt-unified-windows-x86-4.3.0-1-online.exe,自行注册并登录 Qt 账户,在选择组件界面,勾选下图所示组件,然后一直点击下一步安装即可

2.2 Qt-VS 2019 插件安装
-
Qt-Visual Studio 2019 插件下载:qt-vsaddin-msvc2019-2.8.1-rev.06.vsix

-
双击下载好的 qt-vsaddin-msvc2019-2.8.1-rev.06.vsix 直接安装即可

-
在 Visual Studio 2019 中添加 Qt 路径,打开 Visual Studio 2019 新建一个控制台项目,点击下图一所示选项,在下图二中 Version 和 Path 中添加所示内容(具体内容根据自己的情况修改,图示 D:\Qt6 是本人新建文件夹错了,实则安装的是 Qt5)


- Visual Studio 2019 创建 Qt 项目测试(下图三:将 .ui 文件打开方式设置为 Qt 默认打开)



3. PCL 1.12.1 安装
-
双击下载的 PCL-1.12.1-AllInOne-msvc2019-win64.exe 文件安装即可,切记安装路径不能有中文和空格,本文安装路径为 D:\PCL1.12.1,建议与本文一致,安装完得到下图所示(将网盘中的 pcl1.12.1.pri 文件复制到该目录)

-
安装 OpenNI2,先双击 remove,再双击安装


-
将网盘中的 pcl-1.12.1-pdb-msvc2019-win64.zip 文件解压后的内容全选复制到 D:\PCL1.12.1\bin 目录下

-
path 环境变量设置:添加下图红框所示环境变量,如果不放心,可参考这篇博客添加更多环境变量

4. CMake 3.22.4 安装
- 双击下载的 cmake-3.22.4-windows-x86_64.msi 直接安装即可,安装步骤简单此处不赘述

5. VTK 9.1.0 安装
5.1 VTK 简介
- VTK(Visualization Toolkit,可视化工具包)是一个开源、跨平台、可自由获取、支持并行处理的图形应用函数库
- VTK 是一个用于可视化和图形处理的强大库,它提供了丰富的功能和算法,可用于创建和渲染 2D 和 3D 图形,并进行各种可视化和图形处理操作,VTK 库可以用于处理各种类型的数据,包括点云数据
- PCL 是一个专门用于处理点云数据的库,它提供了一组算法和工具,可用于点云的采集、过滤、配准、分割、特征提取等任务,PCL 库的目标是提供一个全面而高效的点云处理解决方案
- 在 PCL 中,有一个模块(pcl_visualization)使用了 VTK 库的功能,用于可视化点云数据和结果,通过使用 VTK 库,PCL 可以提供强大的点云可视化功能
VTK 提供了强大的可视化和图形处理功能,而 PCL 则专注于点云数据的处理,但在某些功能上使用了 VTK 库来实现点云的可视化
5.2 VTK 安装方法一:直接替换
- 下载网盘中编译好的 VTK.rar 文件,解压后直接替换 D:\PCL1.12.1\3rdParty 目录下的 VTK 文件夹即可
5.3 VTK 安装方法二:自行编译
- 参考视频:QT配置pcl
6. Qt PCL 测试案例
-
打开 Qt 5.15.2 新建 Qt Widgets 项目 show(qmake),选择 Qt 5.15.2 MSVC2019 64bit 编译套件

-
在 show.pro 文件添加下行代码
QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgets // 添加下行代码(根据自己安装目录进行修改) include(D:/PCL1.12.1/pcl1.12.1.pri) -
mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QWindow> #include <QHBoxLayout>#include <vtkGenericOpenGLRenderWindow.h> #include <pcl/point_cloud.h> #include <pcl/point_types.h> #include <pcl/io/pcd_io.h> #include <pcl/visualization/pcl_visualizer.h>typedef pcl::PointXYZ PointT; typedef pcl::PointCloud<PointT> PointCloudT; typedef pcl::visualization::PCLVisualizer PCLViewer; typedef std::shared_ptr<PointCloudT> PointCloudPtr;QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACEclass MainWindow : public QMainWindow {Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;PointCloudPtr cloudptr;PCLViewer::Ptr cloud_viewer; }; #endif // MAINWINDOW_H -
mainwindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) {setWindowTitle("PCL Test");ui->setupUi(this);// 创建 PCLViewer 对象并设置窗口标题cloud_viewer.reset(new PCLViewer("Viewer"));cloud_viewer->setShowFPS(false);// 将 cloud_viewer 的渲染窗口嵌入到 QWidget 中auto viewerWinId = QWindow::fromWinId((WId)cloud_viewer->getRenderWindow()->GetGenericWindowId());QWidget *widget = QWidget::createWindowContainer(viewerWinId, nullptr);// 创建 QVBoxLayout 对象并将 QWidget 添加到其中QVBoxLayout* mainLayout = new QVBoxLayout;mainLayout->addWidget(widget);centralWidget()->setLayout(mainLayout);// 创建 PointCloudT 智能指针并加载点云数据// office.pcd 点云文件在网盘中已提供cloudptr.reset(new PointCloudT);pcl::io::loadPCDFile("D:/office.pcd", *cloudptr);// 设置颜色处理器,将点云数据添加到 cloud_viewer 中const std::string axis ="z";pcl::visualization::PointCloudColorHandlerGenericField<PointT> color_handler(cloudptr, axis);cloud_viewer->addPointCloud(cloudptr, color_handler, "cloud"); }MainWindow::~MainWindow() {delete ui; }

相关文章:
Qt PCL学习(一):环境搭建
参考 (QT配置pcl)PCL1.12.1QT5.15.2vs2019cmake3.22.4vtk9.1.0visual studio2019Qt5.15.2PCL1.12.1vtk9.1.0cmake3.22.2 本博客用到的所有资源 版本一览:Visual Studio 2019 Qt 5.15.2 PCL 1.12.1 VTK 9.1.0https://pan.baidu.com/s/1xW7xCdR5QzgS1_d1NeIZpQ?pw…...
代码随想录算法训练营第四十二天 | 416. 分割等和子集
题目链接:416. 分割等和子集 文章讲解:代码随想录 416. 分割等和子集讲解 视频讲解:动态规划之背包问题,这个包能装满吗?| LeetCode:416.分割等和子集 思路和解法 题目: 给你一个 只包含正整…...
Spring GateWay
概述简介 能干什么 反向代理 鉴权 流量控制 熔断 日志监控 Spring Cloud Gateway 与Zuul的区别 在SpringCloud Finchley正式版之前,Spring Cloud推荐的网关是 Netflix提供的Zuul: 1、Zuul 1.x,是一个基于阻塞Ⅳ/O的APl Gateway 2、Zuul 1.x基于Servl…...
介绍一个关于 JSON 可视化的网站
最近在看到一个比较好玩的网站,可以将 JSON以可视化的方式展现出现,比如存在一下JSON数据: {"id": "f3bbc3bc-9f34-4bf7-8a0f-7e6f6e6fbb9a","isActive": false,"age": 25,"name": "…...
系统架构设计师-22年-上午答案
系统架构设计师-22年-上午答案 更多软考资料 https://ruankao.blog.csdn.net/ 1 ~ 10 1 云计算服务体系结构如下图所示,图中①、②、③分别与 SaaS PaaS Iaas相对应,图中①、②、③应为(1) #mermaid-svg-xqMbIVMC8pWrne2L {font-family:"trebuch…...
2024 年改变行业的人工智能主要趋势
1、导读 当我们迈入 2024 年时,了解人工智能趋势至关重要。它们不仅仅涉及技术进步;还涉及技术进步。它们意味着我们解决问题、做出决策和展望未来的方式发生了转变。本文旨在探索这些变革趋势,并强调人工智能如何不断突破可能性的界限&…...
【Linux Day15 TCP网络通讯】
TCP网络通讯 TCP编程流程 接口介绍 socket()方法是用来创建一个套接字,有了套接字就可以通过网络进行数据的收发。创建套接字时要指定使用的服务类型,使用 TCP 协议选择流式服务(SOCK_STREAM)。 **bind()方法是用来指定套接字使…...
力扣:78. 子集
回溯解法思路: 1.跟前面的组合题目有相同的点,主要区别在于:组合题目是遍历到符合条件的组合时加入li1集合中,子集题目是每递归一次就要把结果加入到li1集合中,并遍历但nums数组的最后。其他点和组合问题一样。 clas…...
(29)数组异或操作
文章目录 每日一言题目解题思路方法一方法二 代码方法一方法二 结语 每日一言 泉涸,鱼相与处于陆,相呴以湿,相濡以沫,不如相忘于江湖。 --庄子内篇大宗师 题目 题目链接:数组异或操作 给你两个整数,n 和…...
mac检查CPU温度和风扇速度软件:Macs Fan Control Pro 1.5.17中文版
Macs Fan Control Pro for Mac是一款专业的电脑风扇控制工具,旨在帮助Mac用户有效控制电脑的风扇速度,提高电脑的运行效率和稳定性。 软件下载:Macs Fan Control Pro 1.5.17中文版 该软件支持多种风扇控制模式和预设方案,用户可以…...
数据结构——单链表详解
目录 前言 一.什么是链表 1.概念 编辑 2.分类 二.单链表的实现(不带头单向不循环链表) 2.1初始化 2.2打印 2.3创建新节点 2.4头插、尾插 2.5头删、尾删 2.6查找 2.7在指定位置之前插入 2.8在指定位置之后插入 2.9删除pos位置 2.10删除pos之后的 2.11销毁链表…...
Unity接入GVoice腾讯实时语音
Unity接入GVoice腾讯实时语音 一、介绍二、注册GVoice创建项目语音服务1.创建项目2.申请语音权限3.项目管理查看SDK初始化的一些参数和基本信息4.GVoice检测 三、SDK下载SDK是分为两种类型:独立版集成板 SDK放入Unity工程中 四、语音代码写法五、GVoice踩坑语音权限…...
【Spring基础】从0开始学习Spring(2)
前言 在上篇文章,我已经讲了Spring中最核心的知识点:IoC(控制反转)以及DI(依赖注入)。这篇文章,我将讲一下关于Spring框架中的其它比较琐碎但是又还是挺重要的知识点,因此ÿ…...
cesium mapboxgl+threebox glb 朝向问题
一、3Dbuilder打开glb 二、cesium在pitch和heading都为0的情况下,不设置模型的朝向 三、mapboxglthreebox在pitch和bearing都为0的情况下,不设置模型的朝向 四、对于地图默认视角,cesium设置pitch-90、heading0的时候和mapboxglthreebox设置p…...
LeetCode 打家劫舍
198. 打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个…...
单片机的50个电路
单片机 电源 声音模块 收音机 485 蓝牙 光耦 can 光敏电阻 单片机 矩阵 单片机电路 时钟 ADC 接口电路 红外发射 显示模块 红外接收 蜂鸣器驱动 流水灯 usb供电 烧录电路 数码管 EEPROM LCD1602电路 数码管 max485 红外开关 译码器 移位寄存器 步进电机控制 复位电路 下载电路 …...
JVM 性能调优- 五种内存溢出(5)
在介绍之前先简单介绍下 直接内存(Direct Memory)和堆内存(Heap Memory): 关系: 直接内存并不是Java虚拟机的一部分,它是通过Java的NIO库中的ByteBuffer来分配和管理的。直接内存通常由操作系统的本地内存(Native Memory)提供支持。堆内存是Java虚拟机的一部分,用于存…...
【SQL高频基础】1141.查询近30天活跃用户数
题目: 表:Activity ------------------------ | Column Name | Type | ------------------------ | user_id | int | | session_id | int | | activity_date | date | | activity_type | enum | ------------------------…...
基于spring cloud alibaba的微服务平台架构规划
平台基础能力规划(继续完善更新…) 一、统一网关服务(独立服务) 二、统一登录鉴权系统管理(独立服务) 1.统一登录 2.统一鉴权 3.身份管理 用户管理 角色管理 业务系统和菜单管理 部门管理 岗位管理 字典管…...
leetcode(滑动窗口)3.无重复字符的最长字串(C++详细题解)DAY2
文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...

