• 在Qt创建的UI中放一个显示点云的窗口(PCL+QT5)


    1、首先在Qt Designer创建UI后,拖一个Widget窗口出来

    2、在对象查看器中右击该Widget,选择提升窗口部件,如下操作:

    3、把UI转出来放在VS项目中,其中你的UI代码头文件会自带QVTKOpenGLNativeWidget.h,当然你的VS属性环境得配置好VTK的环境,QVTKOpenGLNativeWidget.h在VTK\include\vtk-9.1路径下;详细操作参考其它博客;

    4、在项目的.h头文件中增加:

    1. //vtk窗口的
    2. #include <vtkRenderer.h>
    3. #include <vtkRenderWindow.h>
    4. #include <vtkGenericOpenGLRenderWindow.h>
    5. #include <pcl/visualization/pcl_visualizer.h>
    6. //pcl加载点云的
    7. #include <pcl/io/pcd_io.h>

    1. private:
    2. pcl::visualization::PCLVisualizer::Ptr viewer; //初始化一个viewer

    5、防止VTK窗口出现警告,在项目的.CPP文件中加上:

    vtkObject::GlobalWarningDisplayOff();    //不显示警告弹窗
    

    此处可能用不上,如果弹了警告窗再加上;

    6、在项目的.CPP文件中加上如下内容,初始化QVTKOpenGLNatiaveWidget那个窗口,窗口的名字是自定义的,我这里叫做widget_opengl。

    1. auto renderer = vtkSmartPointer<vtkRenderer>::New();
    2. auto renderWindow = vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New();
    3. renderWindow->AddRenderer(renderer);
    4. viewer.reset(new pcl::visualization::PCLVisualizer(renderer,renderWindow,"viewer",false));
    5. ui->widget_opengl->setRenderWindow(viewer->getRenderWindow()); //此处widget_opengl是我这个窗口的名称,自定义的
    6. viewer->setopInteractor(ui->widget_opengl->interactor(),ui->widget_opengl->renderWindow());

    本文代码因某些原因,全部手敲的...如果出现打错的地方请指出。

    7、显示点云

    1. //初始化一个点云
    2. pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
    3. //加载点云文件
    4. if(pcl::io::loadPCDFile("cloud.pcd",*cloud)==-1)
    5. {
    6. //此处cloud.pcd是你的点云文件
    7. }
    8. //刷新显示窗口
    9. ui->widget_opengl->repaint();
    10. //添加点云
    11. viewer->addPointCloud(cloud,"cloud");
    12. //刷新
    13. ui->widget_opengl->update();
    14. //视角
    15. viewer->resetCamera();

    8、实现效果:

    --tip:由于代码都是在csdn网页手敲的,可能会有打错的,发现问题麻烦留言提醒一下我谢谢!

  • 相关阅读:
    冒泡排序--python(详解)
    H264码流中SPS PPS详解
    使用IDEA时遇到java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver报错的解决方案
    go基于泛型实现继承
    Mysql 三级等保安全加固
    【JavaScript复习十】数组入门知识
    零代码工具推荐---HiFlow
    tcp三次握手四次挥手
    【springBoot】博客系统
    我要写整个中文互联网界最牛逼的JVM系列教程 | 「JVM与Java体系架构」章节:虚拟机与Java虚拟机介绍
  • 原文地址:https://blog.csdn.net/qq_19319481/article/details/132695527