• win11下的VS2022+QT6+VTK9.2+PCL1.13.1联合开发环境配置及踩坑记录


    准备工作:

    安装VS2022:这个比较简单,网上随便找个教程就行

    安装QT并为VS2022添加QT Creater插件:VS2022配置Qt6_vs2022 qt6-CSDN博客

    安装PCL:vs2022配置pcl1.13.1_pcl配置-CSDN博客 安装PCL过程中本身也会安装VTK,但是这个VTK是个丐版,所以就需要下载VTK的源码编译后对PCL中的VTK进行补充

    下载CMAKE-gui:(版本最好是最新)不然后面生成boost相关会报错 CMake

    下载VTK:在 VTK官网 中下载VTK9.2.0待编译源码,解压后在路径Documentation/dev/bulid.md中可以看到官方提供的Prerequisites以及简易教程

    编译VTK9.2:

    1、VTK下载完成后解压,然后用Cmake-gui打开;新建个文件夹VTK_QT装生成后的文件,在VTK_QT中新建一个build文件夹作为安装目录

     2、点击【Add Entry】按钮添加缓存变量 CMAKE_DEBUG_POSTFIX,类型为 STRING,值设置为 -gd。这样一次性就可以把release和debug分开生成。

    3、单击【Configure】进行配置,根据安装的 VS2022 对应版本的生成器,选择 x64 平台。然后开始配置。配置过程中,cmake 会检测当前环境,编译器等,并生成缓存变量。第一次配置完成后,需要对一些缓存变量进行修改。

    4、第一次结束后会弹出来一些红色的待确定选项:这里有几个地方要注意:

    检查构建lib是否打勾:

     安装目录修改成自己想要的(尽量不要默认,默认可能有权限错误):

    选中Grouped和Advanced,在搜索窗口中搜索QT,将所有与QT相关的选项设置为WANT,QT版本设置为6,然后点击Configure:

    Configure后会出现新的红色区域,这里是让我们选择 Qt6 中各模块的位置:

    5、Configuring done 后,如果只有白色界面,代表没有错误。如果你的界面依旧有红色,返回检查以上哪步没有勾选,一直Configure到只有白色界面,最后点击 Generate,完成后打开项目,先把Debug x64打开:

            右键解决方案中的ALL_BUILD,生成,完成后再右键INSTALL,生成,生成完毕ALL_BUILD应该是成功200多个,失败0,INSTALL是成功100多个,更新100多个,失败0。完成后换成release再重复一遍。

    6、完成后在CMake设置的安装目录中找到四个文件夹,复制后替换PCL/3rdparty/VTK中的这4个文件夹,不要覆盖之前的vtk,重名的选择跳过

     7、最后,如果不使用CMAKE,就把PCL\3rdParty\VTK\lib目录下新增的与QT相关的lib加到VS的属性里面。如果使用CMAKE,就在PCL安装目录的cmake目录中,打开PCLConfig.cmake,在500行左右找到这个:

    用#把原来的注释了,换成(增加Qt的东西):

    set(PCL_VTK_COMPONENTS "ChartsCore;CommonColor;CommonComputationalGeometry;CommonCore;CommonDataModel;CommonExecutionModel;CommonMath;CommonMisc;CommonTransforms;FiltersCore;FiltersExtraction;FiltersGeneral;FiltersGeometry;FiltersModeling;FiltersSources;ImagingCore;ImagingSources;InteractionImage;InteractionStyle;InteractionWidgets;IOCore;IOGeometry;IOImage;IOLegacy;IOPLY;RenderingAnnotation;RenderingCore;RenderingContext2D;RenderingLOD;RenderingFreeType;ViewsCore;ViewsContext2D;RenderingOpenGL2;RenderingVolumeOpenGL2;GUISupportQt;GUISupportQtQuick;GUISupportQtSQL;RenderingQt;ViewsQt")

    使用QVTKOpenGLNativeWidget

    配置完成后,打开.ui文件,拖一个Widget,右键选择提升,提升成QVTKOpenGLNativeWidget。 

     

    完成后在创建的界面程序的.cpp文件中使用如下函数即可实现在QT界面上显示点云文件:

    1. #include "MainWindow.h"
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include
    10. #include
    11. #include
    12. #include
    13. #include
    14. #include
    15. #include
    16. #include
    17. #include
    18. #include
    19. #include
    20. #include
    21. #include //这个必须加
    22. MainWindow::MainWindow(QWidget *parent)
    23. : QMainWindow(parent)
    24. , ui(new Ui::MainWindow)
    25. {
    26. ui->setupUi(this);
    27. pcl::visualization::PCLVisualizer::Ptr viewer;
    28. pcl::PointCloud::Ptr cloud(new pcl::PointCloud);
    29. auto renderer2 = vtkSmartPointer::New();
    30. auto renderWindow2 = vtkSmartPointer::New();
    31. renderWindow2->AddRenderer(renderer2);
    32. viewer.reset(new pcl::visualization::PCLVisualizer(renderer2, renderWindow2, "viewer", false));
    33. ui->screen->setRenderWindow(viewer->getRenderWindow());
    34. viewer->setupInteractor(ui->screen->interactor(), ui->screen->renderWindow());
    35. pcl::io::loadPCDFile(".../xxx.pcd", *cloud);
    36. viewer->addPointCloud(cloud, "sample cloud");
    37. viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "sample cloud");
    38. }
    39. MainWindow::~MainWindow()
    40. {
    41. delete ui;
    42. }

    报错解决:

    1、无法打开包括文件: “QOpenGLWidget”: No such file or directory

            检查在Qt的include目录中QOpenGLWidget是否是在include目录下面,我的是在QOpenGLWidgets文件夹下,引入的路径修改为:#include   即可。 

    2、无法解析的外部符号QOpenGLWidget::resizeGL(int,int)" (?resizeGL@QOpenGLWidget...

            打开项目属性表,选择Qt Project Settings,给Qt Modules添加opengl,给Additional Project Settings添加QT += openglwidgets,解决。

  • 相关阅读:
    idea默认带的equals和hashcode引起的bug
    js高级(代理,浅拷贝深拷贝,节流和防抖,闭包.hasOwnProperty)
    【深度学习】YOLO-Pose 人体关键点估计 人体姿态估计
    SpringBoot2.7.9 配置文件加载方式
    AI人工智能—数据标注的主要类型和标注注意事项
    React源码分析8-状态更新的优先级机制
    51单片机太阳能十字路口交通灯
    汽车电子专有名词与相应技术
    哪吒X选车指南:推荐哪吒X 500lite 版
    zabbix监控平台部署(二)
  • 原文地址:https://blog.csdn.net/mjmald/article/details/133828390