Qt PCL学习(一):环境搭建

本文详细介绍了如何在VisualStudio2019环境中安装和配置QT5.15.2,PCL1.12.1点云处理库,以及VTK9.1.0可视化工具包。步骤包括Qt、PCL、VTK的安装、CMake配置和一个Qt-PCL测试案例。
摘要由CSDN通过智能技术生成

参考

本博客用到的所有资源

  • 版本一览: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 安装方法二:自行编译

6. Qt PCL 测试案例

  • 打开 Qt 5.15.2 新建 Qt Widgets 项目 show(qmake),选择 Qt 5.15.2 MSVC2019 64bit 编译套件
    在这里插入图片描述

  • 在 show.pro 文件添加下行代码

    QT       += core gui
    
    greaterThan(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_NAMESPACE
    
    class MainWindow : public QMainWindow {
        Q_OBJECT
    
    public:
        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;
    }
    

在这里插入图片描述

  • 36
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值