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
    Qt PCL学习(一):环境搭建_第1张图片

1. Visual Studio 2019 安装

Visual Studio 2019 官方下载地址

  • 双击下载好的 vs_enterprise__663473144.1633489885.exe 文件,勾选下述选项安装即可
    Qt PCL学习(一):环境搭建_第2张图片

2. Qt 5.15.2 安装

2.1 Qt 在线安装

  • Qt 在线安装文件下载:qt-unified-windows-x86-4.3.0-1-online.exe
    Qt PCL学习(一):环境搭建_第3张图片

  • 双击下载好的 qt-unified-windows-x86-4.3.0-1-online.exe,自行注册并登录 Qt 账户,在选择组件界面,勾选下图所示组件,然后一直点击下一步安装即可
    Qt PCL学习(一):环境搭建_第4张图片

2.2 Qt-VS 2019 插件安装

  • Qt-Visual Studio 2019 插件下载:qt-vsaddin-msvc2019-2.8.1-rev.06.vsix
    Qt PCL学习(一):环境搭建_第5张图片

  • 双击下载好的 qt-vsaddin-msvc2019-2.8.1-rev.06.vsix 直接安装即可
    Qt PCL学习(一):环境搭建_第6张图片

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

Qt PCL学习(一):环境搭建_第8张图片

  • Visual Studio 2019 创建 Qt 项目测试(下图三:将 .ui 文件打开方式设置为 Qt 默认打开
    Qt PCL学习(一):环境搭建_第9张图片

Qt PCL学习(一):环境搭建_第10张图片

Qt PCL学习(一):环境搭建_第11张图片

3. PCL 1.12.1 安装

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

  • 安装 OpenNI2,先双击 remove,再双击安装
    Qt PCL学习(一):环境搭建_第13张图片

Qt PCL学习(一):环境搭建_第14张图片

  • 将网盘中的 pcl-1.12.1-pdb-msvc2019-win64.zip 文件解压后的内容全选复制到 D:\PCL1.12.1\bin 目录下
    Qt PCL学习(一):环境搭建_第15张图片

  • path 环境变量设置:添加下图红框所示环境变量,如果不放心,可参考这篇博客添加更多环境变量
    Qt PCL学习(一):环境搭建_第16张图片

4. CMake 3.22.4 安装

  • 双击下载的 cmake-3.22.4-windows-x86_64.msi 直接安装即可,安装步骤简单此处不赘述
    Qt PCL学习(一):环境搭建_第17张图片

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 编译套件
    Qt PCL学习(一):环境搭建_第18张图片

  • 在 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 
    #include 
    #include 
    
    #include 
    #include 
    #include 
    #include 
    #include 
    
    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;
    }
    

Qt PCL学习(一):环境搭建_第19张图片

你可能感兴趣的:(Qt,PCL学习,QT5.15.2,PCL1.12.1,VTK9.1.0,CMake,visual,studio,点云可视化,环境配置)