当前位置: 首页 > news >正文

Qt 如何使用VTK显示点云

开发环境

        ubuntu 20.04

        VTK 8.2

编译VTK

下载源码

        git clone --recursive https://gitlab.kitware.com/vtk/vtk.git

        使用版本管理工具,切换版本到8.2

更改编译选项,这里使用cmake-gui进行配置

1、编译类型修改为Release

2、安装路径可以设置,也可以不设置,不设置默认安装到/usr/local目录下

3、勾选VTK_Group_Qt

4、勾选Module_vtkGUISupportQtOpenGL

生成成功后,执行编译

cmake ..

make -j4

make install

 开发

CMakeLists 

find_package(VTK 8.2 COMPONENTS  vtkGUISupportQt
vtkGUISupportQtOpenGL
vtkRenderingGL2PSOpenGL2
vtkRenderingVolumeOpenGL2 REQUIRED)complice_module(${PROJECT_NAME})target_link_libraries( ${PROJECT_NAME} PRIVATE  ${VTK_LIBRARIES}  

.h

#include <QVTKOpenGLNativeWidget.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <vtkGenericOpenGLRenderWindow.h>
#include <vtkOrientationMarkerWidget.h>class  CloudView : public QVTKOpenGLNativeWidget
{Q_OBJECT
public:explicit CloudView(QWidget* parent = nullptr);
private:pcl::visualization::PCLVisualizer::Ptr m_viewer;vtkSmartPointer<vtkRenderer> m_render;vtkSmartPointer<vtkGenericOpenGLRenderWindow> m_renderwindow;vtkSmartPointer<vtkOrientationMarkerWidget> m_axes;
};

.cpp


#include "cloudview.h"
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2)
VTK_MODULE_INIT(vtkRenderingFreeType)#include <vtkAxesActor.h>CloudView::CloudView(QWidget* parent): QVTKOpenGLNativeWidget(parent),m_render(vtkSmartPointer<vtkRenderer>::New()),m_renderwindow(vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New()),m_axes(vtkSmartPointer<vtkOrientationMarkerWidget>::New())
{m_renderwindow->AddRenderer(m_render);m_viewer.reset(new pcl::visualization::PCLVisualizer(m_render, m_renderwindow, "viewer", false));m_viewer->setupInteractor(this->GetInteractor(), this->GetRenderWindow());this->SetRenderWindow(m_viewer->getRenderWindow());m_viewer->setBackgroundColor((double)150.0 / 255.0, (double)150.0 / 255.0, (double)150.0 / 255.0);vtkSmartPointer<vtkAxesActor> actor = vtkSmartPointer<vtkAxesActor>::New();m_axes->SetOutlineColor(0.9300, 0.5700, 0.1300);m_axes->SetOrientationMarker(actor);m_axes->SetInteractor(m_viewer->getRenderWindow()->GetInteractor());m_axes->SetViewport(0.9, 0, 1, 0.15);m_axes->SetEnabled(true);m_axes->InteractiveOn();m_axes->InteractiveOff();m_viewer->getRenderWindow()->Render();
}void CloudView::addPointCloud(const Cloud::Ptr& cloud)
{if (!m_viewer->contains(cloud->id().toStdString()))m_viewer->addPointCloud<PointXYZRGBN>(cloud, cloud->id().toStdString());else{pcl::visualization::PointCloudColorHandlerRGBField<PointXYZRGBN> rgb(cloud);m_viewer->updatePointCloud<PointXYZRGBN>(cloud, rgb, cloud->id().toStdString());}if (cloud->pointSize() != 1)m_viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE,cloud->pointSize(), cloud->id().toStdString());if (cloud->opacity() != 1)m_viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_OPACITY,cloud->opacity(), cloud->id().toStdString());m_viewer->getRenderWindow()->Render();
}

ui上拖拽一个openGl控件, 然后提升为CloudView,然后就可以显示点云数据了

PointCloud::Ptr pointPtr;ui->cloudview->addPointCloud( cloud);
ui->cloudview->resetCamera();

显示效果

相关文章:

Qt 如何使用VTK显示点云

开发环境 ubuntu 20.04 VTK 8.2 编译VTK 下载源码 git clone --recursive https://gitlab.kitware.com/vtk/vtk.git 使用版本管理工具&#xff0c;切换版本到8.2 更改编译选项&#xff0c;这里使用cmake-gui进行配置 1、编译类型修改为Release 2、安装路径可以设置&#xf…...

Ganache结合内网穿透实现远程或不同局域网进行连接访问

文章目录 前言1. 安装Ganache2. 安装cpolar3. 创建公网地址4. 公网访问连接5. 固定公网地址 前言 Ganache 是DApp的测试网络&#xff0c;提供图形化界面&#xff0c;log日志等&#xff1b;智能合约部署时需要连接测试网络。 Ganache 是一个运行在本地测试的网络,通过结合cpol…...

Qt槽函数不响应不执行的一种原因:ui提升导致重名

背景&#xff1a; 一个包含了组件提升的ui&#xff0c;有个按钮的槽函数就是不响应&#xff0c;于是找原因。 分析&#xff1a; 槽函数的对应一是通过connect函数绑定信号&#xff0c;二是on_XXX_signal的命名方式。界面上部件的槽函数通常是第二种。 我反复确认细节&#…...

vuepress路径问题,导致图片不显示

图片不显示&#xff0c;报 Uncaught SyntaxError: Unexpected token <错误 很可能就是&#xff1a;路径配置原因 1.当设置为 / 时&#xff0c;VuePress 会假设你的站点将部署到服务器的根路径&#xff0c; 例如 https://yourdomain.com/。 2.生成的页面链接和资源引用将以…...

QT 重定向qdebug输出到自绘界面

因为在嵌入式中调试qt需要查看输出信息,特意写了一个类用户便捷查看qdebug信息 界面如下: 提供了开始,停止,保存,清空,退出功能,具体代码下文给出 文件如下 #ifndef QDEBUGREDIRECT_H #define QDEBUGREDIRECT_H /**qdebug 重定向类 定向到界面控件*李吉磊 2023.12.7* */#in…...

前端(一):HTML+CSS

参考课程&#xff1a;23最新版web前端开发_哔哩哔哩_bilibili 文档&#xff1a;GitHub - codeNiuMa/HTML-md-file: 学习HTML课程时的资料 目录 1 HTML 1.1 骨架 DOCTYPE html标签 head标签 body标签 title标签 meta标签 1.2 标签标题h1 1.3 段落p 1.4 水平线 1.5 图片img 1.6 …...

如何使用Matlab完成窗口与子窗口

目录 一、前言 二、主窗口与主窗口按钮 三、子窗口 四、调用函数并显示在子窗口中的文本框中 五、关闭子窗口 一、前言 有时候需要借用Matlab完成一个图窗功能&#xff0c;但是我们的程序不仅拥有功能&#xff0c;还拥有一些子功能&#xff0c;那么我们该如何借助Matlab完…...

Threejs之相机基础

参考资料 正投影相机…相机控件MapControls 知识点 注&#xff1a;基于Three.jsv0.155.0 正投影相机正投影相机-Canvas尺寸变化包围盒Box3地图案例(包围盒、正投影)相机动画(.position和.lookAt())不同方向的投影视图旋转渲染结果(.up相机上方向)管道漫游案例OrbitControls…...

2024SIA上海国际轴承工业展览会 ▎参行业盛会 展轴研风采

2024SIA上海国际轴承工业展览会 内容&#xff1a;1、轴承制品展区&#xff1a;2、轴承设备展区&#xff1a;3、轴承零件展区&#xff1a; 国际轴承展丨轴承工业展丨轴承装备展丨上海轴承展丨上海轴承工业展丨上海轴承装备展 2024上海国际轴承工业展览会将会于2024年7月24-26日…...

SQLMap介绍

预计更新SQL注入概述 1.1 SQL注入攻击概述 1.2 SQL注入漏洞分类 1.3 SQL注入攻击的危害 SQLMap介绍 2.1 SQLMap简介 2.2 SQLMap安装与配置 2.3 SQLMap基本用法 SQLMap进阶使用 3.1 SQLMap高级用法 3.2 SQLMap配置文件详解 3.3 SQLMap插件的使用 SQL注入漏洞检测 4.1 SQL注入…...

平头哥玄铁系列 RISC-V 芯片及开发板

1、玄铁 9 系列概述 玄铁 8 系列 基于C-SKY架构&#xff0c;玄铁 9 系列基于 RISC-V 架构。E 系列为 RISC-V 32 位&#xff0c;C 系列为 RISC-V 64 位。 E902&#xff1a;超低功耗 RSIC-V 架构处理器 E902 采用 2 级极简流水线兼容 RISC-V 架构且对执行效率等方面进行了增强&a…...

Android 删除浏览器导航页面修改默认主页

Android 删除浏览器导航页面修改默认主页 近来收到客户需求反馈&#xff0c;需要删除浏览器导航页面并将百度设置为默认主页&#xff0c;具体修改参照如下&#xff1a; 删除浏览器导航页面&#xff1a; /vendor/mediatek/proprietary/packages/apps/Browser/src/com/android…...

【Stm32-F407】Keil uVision5 下新建工程

①双击鼠标左键打开Keil uVision5&#xff0c;选择 Project 下的 New uVision Project &#xff1b; ②在期望的文件夹下创建一个工程&#xff0c;并按如下要求操作&#xff1b; ③添加文件类型&#xff0c;按如下要求操作 ④如有需要可添加相关启动文件在工程文件夹下并添加到…...

linux中文件服务器NFS和FTP服务

文件服务器 NFSNFS介绍配置nfs文件共享服务端客户端 FTPftp介绍FTP基础ftp主动模式ftp被动模式 Vsftp 服务器简介vsftpd配置安装vsftpd[ftp的服务端]编辑配置文件匿名用户设置创建本地用户使用ftp服务 客户端操作匿名用户登录本地用户登录lftp服务 NFS NFS介绍 文件系统级别共…...

茶室茶楼计时计费软件,软件中的商品管理计时操作教程

一、前言 茶室在营业的时候&#xff0c;不但需要计时间&#xff0c;同时还需要管理商品入库出库库存等管理。这就需要一款实用的操作简单的管理软件。 下面以 佳易王茶社计时计费软件V18.0为例说明&#xff0c;其他版本可以参考本教程。 软件下载或技术支持可以点击最下方官…...

从入门到精通:掌握Spring IOC/DI配置管理第三方bean的技巧

IOC/DI配置管理第三方bean 1.1 案例:数据源对象管理1.1.1 环境准备1.1.2 思路分析1.1.3 实现Druid管理步骤1:导入druid的依赖步骤2:配置第三方bean步骤3:从IOC容器中获取对应的bean对象步骤4:运行程序 1.1.4 实现C3P0管理步骤1:导入C3P0的依赖步骤2:配置第三方bean步骤3:运行程…...

Flink的容错机制

容错机制 容错&#xff1a;指出错后不影响数据的继续处理&#xff0c;并且恢复到出错前的状态。 检查点&#xff1a;用存档读档的方式&#xff0c;将之前的某个时间点的所有状态保存下来&#xff0c;故障恢复继续处理的结果应该和发送故障前完全一致&#xff0c;这就是所谓的检…...

GO设计模式——11、装饰器模式(结构型)

目录 装饰器模式&#xff08;Decorator Pattern&#xff09; 装饰器模式的核心角色&#xff1a; 优缺点 使用场景 代码实现 装饰器模式&#xff08;Decorator Pattern&#xff09; 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功…...

全志V3s之U-Boot

1、安装交叉编译器&#xff1a; ARM交叉编译器的官网&#xff1a;交叉编译器 a、使用wget下载&#xff1a; wget https://releases.linaro.org/components/toolchain/binaries/latest/arm-linux-gnueabihf/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xzb、解…...

【华为OD】依据用户输入的单词前缀,从已输入的英文语句中联想出用户想输入的单词,按字典序输出联想到的单词序列

题目描述主管期望你来实现英文输入法单词联想功能需求如下:依据用户输入的单词前缀,从已输入的英文语句中联想出用户想输入的单词,按字典序输出联想到的单词序列,如果联想不到,请输出用户输入的单词前缀注意1.英文单词联想时,区分大小写2.缩略形式如"dont",判定…...

Zend Framework错误处理与日志记录终极指南:10个构建稳定生产环境的技巧

Zend Framework错误处理与日志记录终极指南&#xff1a;10个构建稳定生产环境的技巧 【免费下载链接】zendframework Official Zend Framework repository 项目地址: https://gitcode.com/gh_mirrors/ze/zendframework Zend Framework作为一款成熟的PHP开发框架&#xf…...

Mergo入门指南:10分钟学会Go结构体与映射合并技巧

Mergo入门指南&#xff1a;10分钟学会Go结构体与映射合并技巧 【免费下载链接】mergo Mergo: merging Go structs and maps since 2013 项目地址: https://gitcode.com/gh_mirrors/me/mergo Mergo是一个强大的Go语言库&#xff0c;专门用于合并结构体&#xff08;struct…...

【刚性 PINN 与时间自适应策略】第九章:综合案例实战:刚性化学反应动力学模拟

目录 9.1 问题描述与数据生成 9.1.1 Robertson 刚性化学反应模型构建 9.1.2 传统 PINN 的失败复现与诊断 第二部分:代码实现 9.1.1.1 三组分反应方程组及其刚性特征分析 9.1.1.2 基准解的生成(使用隐式求解器) 9.1.2.1 训练损失曲线与预测结果的偏差可视化 9.1.2.2 …...

创新实训第一周总结

第一周工作产出较少&#xff0c;作为患者端的开发者&#xff0c;为了保证数据库不出现重合或冲突等原因&#xff0c;我等待医生端和管理员端的开发初步完成后再进行的开发。第一篇博客的技术性会较低想到什么说什么本周的工作主要以分析为主首先分析了数据库的结构&#xff08;…...

SunnyUI的UITreeView控件实战:从拖拽到动态加载的完整指南

SunnyUI的UITreeView控件实战&#xff1a;从拖拽到动态加载的完整指南 在企业级应用开发中&#xff0c;树形结构数据展示几乎是每个.NET开发者都会遇到的场景。传统的WinForms TreeView控件虽然基础功能完善&#xff0c;但在现代UI体验和开发效率上逐渐显得力不从心。SunnyUI框…...

手把手教你用EAS2搞定maxon电机与elmo驱动器:从参数辨识到运动控制

手把手教你用EAS2实现maxon电机与elmo驱动器的精准控制 在工业自动化和精密运动控制领域&#xff0c;maxon电机以其卓越的性能和可靠性著称&#xff0c;而elmo驱动器则是实现高精度控制的理想选择。本文将带你从零开始&#xff0c;通过EAS2软件完成从硬件连接到参数辨识&#x…...

手把手教你搭建基于Matlab/Simulink的插电式混合动力汽车4驱PHEV模型

基于Matlab/simulink的插电式混合动力汽车建模仿真模型4驱PHEV&#xff08;比亚迪唐DM混动系统P2P4发动机——三擎四驱&#xff09;&#xff0c;包括整车HCU控制单元、发动机模型、驱动电机模型、ISG电机模型、AMT5档自动变速箱模型、驾驶员模型、电池能量管理控制模型等&#…...

CODESYS开发教程7-变量作用域与存储类型实战解析

1. 变量作用域&#xff1a;从菜市场到保险箱的生动比喻 刚接触CODESYS开发时&#xff0c;我总被各种变量作用域搞得晕头转向。直到有天去菜市场买菜&#xff0c;突然发现变量作用域和菜市场的摊位布局简直一模一样&#xff01;全局变量就像菜市场入口处的公共电子屏&#xff0c…...

QGIS进阶指南:动态标注与条件表达式高级应用

1. 动态标注的核心价值与应用场景 当你面对一个包含上千条建筑数据的地图图层时&#xff0c;传统静态标注会显得力不从心——商场和医院用相同字体显示&#xff0c;重要地标淹没在普通建筑中&#xff0c;数据更新后还得手动调整样式。这就是动态标注技术大显身手的时候了。 动态…...

IBM Rhapsody 9.0.2 配置与编译问题解决指南

1. IBM Rhapsody 9.0.2环境配置常见问题解析 第一次接触IBM Rhapsody 9.0.2时&#xff0c;我遇到了不少配置上的坑。这个强大的系统建模工具虽然功能全面&#xff0c;但在环境搭建阶段确实需要特别注意几个关键点。最典型的问题就是Visual Studio版本兼容性&#xff0c;这也是大…...