在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头文件**中增加:

复制代码
//vtk窗口的
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkGenericOpenGLRenderWindow.h>
#include <pcl/visualization/pcl_visualizer.h>

//pcl加载点云的
#include <pcl/io/pcd_io.h>

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

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

复制代码
vtkObject::GlobalWarningDispalyOff()    //不显示警告弹窗

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

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

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

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

7、显示点云

复制代码
//初始化一个点云
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);

//加载点云文件
if(pcl::io::loadPCDFile("cloud.pcd",*cloud)==-1)
{
    //此处cloud.pcd是你的点云文件
}

//刷新显示窗口
ui->widget_opengl->repaint();
//添加点云
viewer->addPointCloud(cloud,"cloud");
//刷新
ui->widget_opengl->update();
//视角
viewer->resetCamera();

8、实现效果:

相关推荐
诗书画唱4 分钟前
【前端面试题】JavaScript 核心知识点解析(第二十二题到第六十一题)
开发语言·前端·javascript
冬天vs不冷5 分钟前
Java基础(九):Object核心类深度剖析
java·开发语言·python
TS的美梦6 分钟前
【1:1复刻R版】python版火山图函数一键出图
开发语言·python·r语言·scanpy·火山图
眠りたいです39 分钟前
Qt音频播放器项目实践:文件过滤、元数据提取与动态歌词显示实现
c++·qt·ui·音视频·媒体·qt5·mime
陈天伟教授1 小时前
(二)Python + 地球信息科学与技术 (GeoICT)=?
开发语言·python
汤永红1 小时前
week2-[循环嵌套]数位和为m倍数的数
c++·算法·信睡奥赛
1白天的黑夜13 小时前
前缀和-560.和为k的子数组-力扣(LeetCode)
c++·leetcode·前缀和
七七&55610 小时前
2024年08月13日 Go生态洞察:Go 1.23 发布与全面深度解读
开发语言·网络·golang
java坤坤10 小时前
GoLand 项目从 0 到 1:第八天 ——GORM 命名策略陷阱与 Go 项目启动慢问题攻坚
开发语言·后端·golang
元清加油10 小时前
【Golang】:函数和包
服务器·开发语言·网络·后端·网络协议·golang