pcl+vtk(三)QT中使用QVTKOpenGLNativeWidget的简单教程以及案例,利用PCLVisualizer显示点云

这篇具有很好参考价值的文章主要介绍了pcl+vtk(三)QT中使用QVTKOpenGLNativeWidget的简单教程以及案例,利用PCLVisualizer显示点云。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

先添加一个带有ui的QT应用程序。

一、在ui界面中添加QVTKOpenGLNativeWidget控件

先拖出来一个QOpenGLWidget控件

qvtkopenglnativewidget,pcl+vtk,QT,qt,开发语言,vtk,pcl

修改布局如下:

qvtkopenglnativewidget,pcl+vtk,QT,qt,开发语言,vtk,pcl

然后将QOpenGLWidget控件提升为QVTKOpenGLNativeWidget控件,步骤如下:

右击QOpenGLWidget窗口,选择【提示为...】

qvtkopenglnativewidget,pcl+vtk,QT,qt,开发语言,vtk,pcl

 输入提升的类名称为QVTKOpenGLNativeWidget

qvtkopenglnativewidget,pcl+vtk,QT,qt,开发语言,vtk,pcl

 此时需要把自动生成的qvtkopenglnativewidget.h修改为QVTKOpenGLNativeWidget.h,否则报错找不到qvtkopenglnativewidget.h头文件,因为下载下来的头文件名称为QVTKOpenGLNativeWidget.h。

点击【添加】按钮。

qvtkopenglnativewidget,pcl+vtk,QT,qt,开发语言,vtk,pcl

选中提升的类,点击【提升】按钮。

qvtkopenglnativewidget,pcl+vtk,QT,qt,开发语言,vtk,pcl

二、修改.pro文件,添加所需库

INCLUDEPATH += /usr/include/eigen3

INCLUDEPATH += /usr/local/include/vtk-8.2
LIBS += /usr/local/lib/libvtk*.so

INCLUDEPATH += /usr/local/include/pcl-1.13
LIBS += /usr/local/lib/libpcl_*.so

三、添加所需头文件

#include <vtkRenderWindow.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/point_types.h>//各种格式的点的头文件
#include <pcl/io/pcd_io.h>
#include <vtkGenericOpenGLRenderWindow.h>

四、显示点云代码

先在头文件widget.h中添加

    boost::shared_ptr< pcl::visualization::PCLVisualizer > view;

在widget.cpp文件中的构造函数中添加初始化

    vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
    vtkSmartPointer<vtkGenericOpenGLRenderWindow> renderWindow = vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New();
    renderWindow->AddRenderer(renderer);
    view.reset(new pcl::visualization::PCLVisualizer(renderer,renderWindow,"viewer",false));
    view->setupInteractor(ui->guiwidget->GetInteractor(),ui->guiwidget->GetRenderWindow());
    ui->guiwidget->SetRenderWindow(view->getRenderWindow());

添加按钮的点击事件对应的槽函数,添加加载点云的代码

    //读取pcd文件并显示
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>());//创建点云指针
    QString fileName = QFileDialog::getOpenFileName(this, "Open PointCloud", ".", "Open PCD files(*.pcd)");
    if(fileName == "") return;
    pcl::io::loadPCDFile(fileName.toStdString(),*cloud);
    view->addPointCloud(cloud,"cloud");
    view->resetCamera();    //视角
    ui->guiwidget->update();

在main.cpp中引用下面头文件并在QApplication调用前添加下面代码,解决报opengl版本过低的问题。

#include <QSurfaceFormat>
#include "QVTKOpenGLNativeWidget.h"
QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());

全部整体代码见下图:

qvtkopenglnativewidget,pcl+vtk,QT,qt,开发语言,vtk,pcl

qvtkopenglnativewidget,pcl+vtk,QT,qt,开发语言,vtk,pcl

qvtkopenglnativewidget,pcl+vtk,QT,qt,开发语言,vtk,pcl

qvtkopenglnativewidget,pcl+vtk,QT,qt,开发语言,vtk,pcl

五、运行程序

运行界面如下:

qvtkopenglnativewidget,pcl+vtk,QT,qt,开发语言,vtk,pcl

点击【load_pcd】按钮加载点云的pcd文件。

pcd文件可直接在解压的pcl源文件中的test文件夹中查看。

qvtkopenglnativewidget,pcl+vtk,QT,qt,开发语言,vtk,pcl

qvtkopenglnativewidget,pcl+vtk,QT,qt,开发语言,vtk,pcl

六、问题

存在一个问题:加载完文件之后,需要点击一下视图或者对视图进行一下缩放操作才能出现点云数据图像,之前用VTKWidget时加载完文件可以直接显示出来。如果有知道此问题出现的原因以及解决办法的网友,希望评论告知,感谢!

解决啦!!!!!!只需要在最后加上下面这句就可以啦!!!!!!!!

ui->guiwidget->GetRenderWindow()->Render();

如下:

qvtkopenglnativewidget,pcl+vtk,QT,qt,开发语言,vtk,pcl

七、点云转换


    //创建点云对象
    pcl::PointCloud<pcl::PointXYZ> cloud;
    //创建点云指针对象
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_ptr(new pcl::PointCloud<pcl::PointXYZ>);
    //转换
    cloud = * cloud_ptr;
    cloud_ptr = cloud.makeShared();

八、关于下载pcd文件

也可以去下面链接去下载(网上找到的关于兔子的例子都是在下面链接中下载的),不过下载的是ply文件,需要转为pcd文件,转换方法在下一篇文章会说明。

The Stanford 3D Scanning Repository文章来源地址https://www.toymoban.com/news/detail-822338.html

到了这里,关于pcl+vtk(三)QT中使用QVTKOpenGLNativeWidget的简单教程以及案例,利用PCLVisualizer显示点云的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【VTK】读取一个 STL 文件,并使用 Qt 显示出来,在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 直接先把效果放出来,有需要就往下看。 骷髅3D打印3D模型

    2024年02月14日
    浏览(51)
  • 【VTK】VTK 显示小球例子,在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 编号 内容 1 【Visual Studio】在 Windows 上使用 Visual Studio 构建 VTK 2 【Visual Studio】在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK 3 【VTK】VTK 显示小球例子,在 Windows 上使用 Visual Studio 配

    2024年02月17日
    浏览(44)
  • win10下在Qt中使用VTK(安装VS2017+安装QT5.9.9+编译配置VTK8.2.0)

    作为一个只浅学过C语言和C++的纯小白,在编译VTK(visualization toolkit)并与Qt结合的过程中遇到了很多问题,零零碎碎也看了许多文章教程,但由于版本兼容、过程不完整等问题走了许多弯路,最后东拼西凑勉强完成,故写下这篇文章供大家参考。 本文主要目的是安装vs2017,

    2024年02月11日
    浏览(36)
  • Qt所有容器之间的区别,以及如何简单使用?

    Qt中常用的容器有 QList、QVector、QMap、QHash、QSet 等,它们都具有不同的特性和适用场景。 1. QList:动态数组,可以动态增加和删除元素,支持随机访问和迭代,适用于不需要频繁插入或删除元素的场景。 ```cpp QListint list; list.append(1); list.append(2); foreach(int val, list) {     qDebug()

    2024年01月19日
    浏览(27)
  • QT Designer 生成的ui文件转化成py文件以及简单使用

    首先用QTdesigner 设计你的界面 然后保存成.ui文件 这一步大家应该都可以做到,就不细讲了 然后就是转换步骤 使用cmd进入ui所在目录 或者在pycharm项目里的终端进入ui所在目录 然后输入下列语句 这里的outputUI就可以替换成你想要的输出文件名 InputUI就是你想要转换的ui文件名 稍

    2023年04月08日
    浏览(39)
  • Jupyter Notebook安装以及简单使用教程

    本文章将,简要的讲解在已经拥有Python环境下如何进行Jupyter Notebook的安装。并且简短的介绍Jupyter Notebook的使用方法。 Jupyter Notebook是一个基于Web的交互式计算环境,它支持多种编程语言,包括Python、R、Julia等。Jupyter Notebook以笔记本形式组织代码、文本、数学公式和可视化结

    2024年01月23日
    浏览(71)
  • PyQt6 使用Qt Designer实现简单的界面,以及ui文件转py文件

    前言,主要通过参考并总结两篇文章中的部分内容,参考文章一 参考文章二 新增一个用户注册界面,包含用户名,密码,性别,手机号,点击注册按钮时,弹出一个对话框,提示恭喜 “{用户输入的用户名}” 注册成功。但是无奈还没找出获取最新输入用户名的值,就简单做

    2024年02月04日
    浏览(37)
  • Qt安装教程以及QT Creater,同时使用清华源镜像,解决安装过慢的问题

    下载地址链接 https://download.qt.io/    根据你自己操作系统选择对应的下载文件  在你想把QT安装的地址下,创建一个文件夹,把QT安装包放进去 在此处输入CMD,回车进入命令指示符  输入命令  此处的installer.exe是你安装包的名字,鄙人安装包名字为qt-unified-windows-x64-4.5.2-onli

    2024年02月06日
    浏览(42)
  • ROS下使用PCL库教程

    最近打算做一点点云数据处理相关的工作,所以就用到PCL(点云库),ubantu已经自己带了PCL库,我用的是uantu20.04.4+Ros noetic+pcl 1.10+vscode。PCL官网提供的教程是单独PCL在cmke编译的,要在ros框架下使用则需要将PCL官方教程与ROS匹配。ROS官方提供教程。以下是在ROS下跑通第一个PCL程序

    2024年02月09日
    浏览(31)
  • Qt 集成VTK

    Qt hello | 专注于Qt的技术分享平台 一,需求 集成VTK环境到Qt中 下载vtk源码,并使用cmake 结合vs2019编辑成dll库。 GitHub - Kitware/VTK: Mirror of Visualization Toolkit repository Qt工程引入,库比较多,偷懒的情况下全部引入。 pro文件配置如下: 3. UI文件中,创建一个QWidget,并将其提升为QV

    2024年04月27日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包