《PCL+QT》各版本环境配置问题总结

PCL各版本QT配置问题

  • 一、资源下载
    • 1、vs2015 -pcl1.8.1 - qt5.12 -vtk8
    • 2、 vs2019-pcl 1.11.1-qt 5.12-vtk8.2
    • 3、 vs2019-pcl1.12.1-qt 6.2.4-vtk9.1
    • 4 、vs2022-pcl1.13.0-qt 6.2.4-vtk9.2
  • 二、版本
    • 1、 vs2015 -pcl1.8.1 - qt5.12 -vtk8
    • 2、 vs2019-pcl 1.11.1-qt 5.12-vtk8.2
    • 3、 vs2019-pcl1.12.1-qt 6.2.4-vtk9.1
    • 4 、vs2022-pcl1.13.0-qt 6.2.4-vtk9.2
    • 5、自己配置过程
    • 6、简单配置教程
      • 1、下载我编译好的对应版本
      • 更改对应路径
  • 三、升级QT6后注意事项
    • 1、PCL1.12、1.13版本指针释放问题
      • pcl指针释放问题
    • 2、QT6中vtk显示问题
      • pcl1.12中QVTKOpenGLNativeWidget 显示代码
      • pcl1.13中QVTKOpenGLNativeWidget 显示代码
      • 窗口显示控件 QVTKOpenGLNativeWidget
      • pro文件
    • 3、QT6 PCL显示窗口QVTKOpenGLNativeWidget 不更新问题
      • pcl1.12
      • pcl1.13
    • 3、PCL1.12、1.13中视角显示问题

一、资源下载

下面是我编译好的各版本pcl,注意对应关系:

1、vs2015 -pcl1.8.1 - qt5.12 -vtk8

用的最久的版本

pcl1.8.1太久远了,电脑实在找不到了

2、 vs2019-pcl 1.11.1-qt 5.12-vtk8.2

个人觉得最好用的版本
qt5+pcl1.11版本

3、 vs2019-pcl1.12.1-qt 6.2.4-vtk9.1

qt6+pcl1.12版本

4 、vs2022-pcl1.13.0-qt 6.2.4-vtk9.2

qt6+pcl1.13版本

二、版本

1、 vs2015 -pcl1.8.1 - qt5.12 -vtk8

测试案例:
pcl1.8.1测试案例

2、 vs2019-pcl 1.11.1-qt 5.12-vtk8.2

测试案例:
pcl1.11.1测试案例

3、 vs2019-pcl1.12.1-qt 6.2.4-vtk9.1

测试案例:

pcl1.12.1测试案例

4 、vs2022-pcl1.13.0-qt 6.2.4-vtk9.2

测试案例:

pcl1.13.0测试案例

5、自己配置过程

参考网上配置PCL1.12+VTK9.1+QT6

6、简单配置教程

1、下载我编译好的对应版本

已pcl1.13.0为例,注意qt与pcl对应版本关系
《PCL+QT》各版本环境配置问题总结_第1张图片
《PCL+QT》各版本环境配置问题总结_第2张图片

更改对应路径

打开环境变量,先更改OpenNI2的路径

《PCL+QT》各版本环境配置问题总结_第3张图片

继续修改系统path里面的路径,改完即可。
《PCL+QT》各版本环境配置问题总结_第4张图片

三、升级QT6后注意事项

1、PCL1.12、1.13版本指针释放问题

pcl指针释放问题

VS解决办法 :pcl内存释放
QT解决办法 :pro文件添加

QMAKE_CXXFLAGS += /arch:AVX

2、QT6中vtk显示问题

下面就是pcl在qt中的显示,和qt5略有不同。

pcl1.12中QVTKOpenGLNativeWidget 显示代码

    viewer.reset(new pcl::visualization::PCLVisualizer("viewer", false));
    vtkNew<vtkGenericOpenGLRenderWindow> window;
    window->AddRenderer(viewer->getRendererCollection()->GetFirstRenderer());
    ui->openGLWidget->SetRenderWindow(window.Get());
    viewer->setupInteractor(ui->openGLWidget->GetInteractor(), ui->openGLWidget->GetRenderWindow());
    ui->openGLWidget->update();

pcl1.13中QVTKOpenGLNativeWidget 显示代码

    viewer.reset(new pcl::visualization::PCLVisualizer("viewer", false));
    vtkNew<vtkGenericOpenGLRenderWindow> window;
    window->AddRenderer(viewer->getRendererCollection()->GetFirstRenderer());
    ui->openGLWidget->setRenderWindow(window.Get());
    ui->openGLWidget->update();

窗口显示控件 QVTKOpenGLNativeWidget

《PCL+QT》各版本环境配置问题总结_第5张图片

pro文件

如果报错,可能是以下未添加!

QT       +=  openglwidgets

3、QT6 PCL显示窗口QVTKOpenGLNativeWidget 不更新问题

pcl1.12

每次添加点云时候,先添加以下

    viewer.reset(new pcl::visualization::PCLVisualizer("viewer", false));
    vtkNew<vtkGenericOpenGLRenderWindow> window;
    window->AddRenderer(viewer->getRendererCollection()->GetFirstRenderer());
    ui->openGLWidget->SetRenderWindow(window.Get());
    viewer->setupInteractor(ui->openGLWidget->GetInteractor(), ui->openGLWidget->GetRenderWindow());

完整显示

   viewer.reset(new pcl::visualization::PCLVisualizer("viewer", false));
    vtkNew<vtkGenericOpenGLRenderWindow> window;
    window->AddRenderer(viewer->getRendererCollection()->GetFirstRenderer());
    ui->openGLWidget->SetRenderWindow(window.Get());
    viewer->setupInteractor(ui->openGLWidget->GetInteractor(), ui->openGLWidget->GetRenderWindow());

    viewer->addPointCloud<pcl::PointXYZ>(cloud.makeShared(),std::to_string(cloud_vec.size()-1));
    //设置点云大小
    viewer->setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, point_size, std::to_string(cloud_vec.size()-1));
    viewer->resetCamera();
    ui->openGLWidget->update();

pcl1.13

每次添加点云时候,先添加以下

    viewer.reset(new pcl::visualization::PCLVisualizer("viewer", false));
    vtkNew<vtkGenericOpenGLRenderWindow> window;
    window->AddRenderer(viewer->getRendererCollection()->GetFirstRenderer());
    ui->openGLWidget->setRenderWindow(window.Get());

完整显示


    //每次添加点云时候,先添加以下
    viewer.reset(new pcl::visualization::PCLVisualizer("viewer", false));
    vtkNew<vtkGenericOpenGLRenderWindow> window;
    window->AddRenderer(viewer->getRendererCollection()->GetFirstRenderer());
    ui->openGLWidget->setRenderWindow(window.Get());

    viewer->addPointCloud<pcl::PointXYZ>(cloud.makeShared(),std::to_string(cloud_vec.size()-1));
    //设置点云大小
    viewer->setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, point_size, std::to_string(cloud_vec.size()-1));
    viewer->resetCamera();
    ui->openGLWidget->update();

3、PCL1.12、1.13中视角显示问题

尚未解决!!!!

你可能感兴趣的:(PCL,QT开发,qt,开发语言)