PCL点云开发-解决在Qt中嵌入点云窗口出现的一闪而过的黑窗口

server/2024/11/19 17:47:18/

PCLQt_1">PCL点云开发-解决在Qt中嵌入点云窗口出现的一闪而过的黑窗口

众所周知,在windows下开发PCL点云最快的方式就是到官网下载其预编译好的库,比如:
PCL-1.14.0-AllInOne-msvc2022-win64.exe

这时候你到网络上搜索,大概率会有两种方案:
1、等PCL创建好窗口后,拿到该窗口的句柄,使用Qt的API将其嵌入到QWidget中,这就是为什么会出现一闪而过的黑窗口的原因
2、重新编译VTK以及PCL库,打开Qt支持模块,在Qt中将QOpenGLWidget提升为PCLQVTKWidget

喜欢偷懒的程序员怎么可能会去编译源码呢,绝不可能😂,那就研究下第一种方案如何解决一闪而过的黑窗口。
按照这种思路思考,第一种方案是不是在其创建RenderWindow的时候不显示窗口,等其嵌入Qt控件的时候显示就可以了。是的就是这么简单,怎么做呢?打开格局就可以了,格局如下:

#include <pcl/visualization/pcl_visualizer.h>
#include <vtkRenderer.h>#include <QApplication>
#include <QMainWindow>
#include <QWindow>int main(int argc, char *argv[])
{QApplication a(argc, argv);pcl::visualization::PCLVisualizer::Ptr viewer;// 创建渲染器vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();// 创建渲染窗口vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();// 设置渲染窗口不显示renderWindow->SetShowWindow(false);// 构造PCLVisualizerviewer.reset(new pcl::visualization::PCLVisualizer(renderer, renderWindow, "viewer", true));// 将renderWindow的嵌入到QWidget中auto viewerWinId = QWindow::fromWinId((WId)renderWindow->GetGenericWindowId());auto widget = QWidget::createWindowContainer(viewerWinId, nullptr);widget->show();// 添加点云pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGB>);cloud->resize(500);for (auto &point : *cloud) {point.x = 1024 * rand() / (RAND_MAX + 1.0f);point.y = 1024 * rand() / (RAND_MAX + 1.0f);point.z = 1024 * rand() / (RAND_MAX + 1.0f);point.r = 255 * (1024 * rand() / (RAND_MAX + 1.0f));point.g = 255 * (1024 * rand() / (RAND_MAX + 1.0f));point.b = 255 * (1024 * rand() / (RAND_MAX + 1.0f));}viewer->addPointCloud(cloud, "cloud");return a.exec();
}

效果如下:
在这里插入图片描述


http://www.ppmy.cn/server/143253.html

相关文章

Linux 系统下的硬件视频加速

在浏览器研发中&#xff0c;GPU 硬件加速相关的问题常常令人头疼&#xff0c;而这些问题中&#xff0c;视频播放更是棘手。回顾以往&#xff0c;在基于 Android 系统开发浏览器时&#xff0c;我曾撰写了一系列与浏览器视频播放相关的技术文章&#xff1a; Chromium HTML Video …

YashanDB 23.2.3安装过程,并使用DBeaver进行连接

Yashandb安装 环境准备 虚拟机环境说明 虚拟机系统&#xff1a;centos 7.9&#xff0c;2c&#xff0c;8g&#xff0c;100GB&#xff1b;内存至少4G&#xff0c;否则无法安装&#xff1b; 安装用户&#xff1a;yashan 软件目录&#xff1a;/app/install 安装目录&#xff1a;…

【分布式技术】ES扩展知识-Elasticsearch分词器的知识与选择

ES知识扩展 分词器有哪些&#xff1f;1. 标准分词器&#xff08;Standard Analyzer&#xff09;&#xff1a;示例示例文本分析配置参数与自定义应用场景 2. Simple Analyzer&#xff1a;示例示例文本分析应用场景与限制结论 3. Whitespace Analyzer&#xff1a;示例示例文本分析…

深度神经网络DNN反向传播BP算法公式推导

深度神经网络DNN反向传播BP算法推导、δ法则 文章目录 前言一、单个神经元的内部结构二、前向传播三、反向传播总结 前言 \;\;\;\;\; 本文详细推导深度神经网络DNN反向传播BP算法中对权重w和偏置b的更新公式。通过图片和一步步的数学公式推导深刻理解反向传播BP算法&#xff0c…

等保二级需要哪些安全设备?

在信息化高速发展的今天&#xff0c;服务器的安全性成为了企业乃至国家信息安全的重要基石。等保二级&#xff0c;作为信息安全等级保护制度中的一个关键环节&#xff0c;对服务器的安全防护提出了明确要求。本文将详细阐述服务器等保二级所需的各种安全设备&#xff0c;旨在为…

Java项目实战II基于微信小程序的私家车位共享系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在城市化进…

基于Java Springboot宠物流浪救助系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA 数据库&#xff1a;MySQL…

org.springframework.context.support.ApplicationListenerDetector 详细介绍

一&#xff0c;功能介绍 early post-processor for detecting inner beans as ApplicationListeners 早期的PostProcessor用来检测并处理内部&#xff08;inner&#xff09;bean作为 ApplicationListeners BeanPostProcessor that detects beans which implement the Applica…