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

在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::GlobalWarningDisplayOff();    //不显示警告弹窗

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

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、实现效果:

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

http://www.lryc.cn/news/163947.html

相关文章:

  • element ui el-table分页多选功能
  • 理解网络通信的基础:OSI七层模型与TCP/IP五层模型
  • Python爬虫-爬取文档内容,如何去掉文档中的表格,并保存正文内容
  • 【使用Cpolar和Qchan搭建自己的个人图床】
  • flutter解决多个类名重名问题
  • 微信小程序 按钮颜色
  • 【云原生】kubectl常用命令大全
  • git pull
  • C++学习之运算符与表达式
  • vue使用谷歌地图实现地点查询
  • 前端该了解的网络知识
  • python3在虚拟环境实用vscode调试错误输出ModuleNotFoundError: No module named ‘django‘解决方法
  • 如何获得一个Oracle 23c免费开发者版
  • 机器学习策略二——优化深度学习系统
  • Pytorch Advanced(三) Neural Style Transfer
  • 英飞凌TC3xx--深度手撕HSM安全启动(三)--TC3xx HSM系统架构
  • 黑马JVM总结(五)
  • C语言入门Day_18 判断和循坏的小结
  • mac 好用的工具推荐
  • 星际争霸之小霸王之小蜜蜂(十二)--猫有九条命
  • 【软件分析/静态分析】chapter8 课程11/12 指针分析—上下文敏感(Pointer Analysis - Context Sensitivity)
  • 时间复杂度与空间复杂度详解
  • 目录操作函数
  • PlantUML入门教程:画时序图
  • C#范围运算符
  • 云数据库知识学习——云数据库产品、云数据库系统架构
  • C++中引用详解!
  • VUE3+TS项目无法找到模块“../version/version.js”的声明文件
  • 数据结构-堆的实现及应用(堆排序和TOP-K问题)
  • Spring 条件注解没生效?咋回事