《pyqt+open3d》open3d可视化界面集成到qt中

《pyqt+open3d》open3d可视化界面集成到qt中

  • 一、效果显示
  • 二、代码
  • 三、资源下载

一、效果显示

在这里插入图片描述

二、代码

参考链接

main.py

import sys
import open3d as o3d
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget
from PyQt5.QtGui import QWindow
from PyQt5.QtCore import QTimer
import win32gui
import MainWindowclass MainWindows(QMainWindow):def __init__(self, parent=None):super(MainWindows, self).__init__(parent)self.ui = MainWindow.Ui_MainWindow()self.ui.setupUi(self)self.vis = o3d.visualization.Visualizer()self.vis.create_window(visible=False)  # visible=False窗口不显示,避免启动时一闪而过self.winid = win32gui.FindWindow('GLFW30', None)self.sub_window = QWindow.fromWinId(self.winid)self.displayer = QWidget.createWindowContainer(self.sub_window)self.ui.gridLayout.addWidget(self.displayer)self.clock = QTimer(self)self.clock.timeout.connect(self.draw_update)self.clock.start(20)self.draw_test()def draw_test(self):pcd = o3d.io.read_point_cloud('output1.ply')  # 点云路径self.vis.add_geometry(pcd)self.vis.update_geometry(pcd)def draw_update(self):self.vis.poll_events()self.vis.update_renderer()def __del__(self):# self.clock.stop()      #这一行其实并不需要self.vis.destroy_window()if __name__ == '__main__':app = QApplication(sys.argv)window = MainWindows()window.show()sys.exit(app.exec_())

mainWindow.py

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'MainWindow.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(800, 600)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.gridLayout_2 = QtWidgets.QGridLayout(self.centralwidget)self.gridLayout_2.setObjectName("gridLayout_2")self.gridLayout = QtWidgets.QGridLayout()self.gridLayout.setObjectName("gridLayout")self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1)MainWindow.setCentralWidget(self.centralwidget)self.menubar = QtWidgets.QMenuBar(MainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22))self.menubar.setObjectName("menubar")MainWindow.setMenuBar(self.menubar)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))

ui文件在下载链接中

三、资源下载

下载链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/55137.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

App模拟下载场景的demo

摘要 目的:提供一个稳定的下载场景,可以手动触发和定时触发下载,每次下载相同大小文件,研究下载场景的功耗影响 原理:把电脑当做服务器,手机测试App固定下载电脑存放的某个XXXMB的大文件,基于…

C语言进阶版第14课—内存函数

文章目录 1. memcpy函数的使用和模拟实现1.1 memcpy函数的使用1.2 模拟实现memcpy函数 2. memmove函数的使用和模拟实现2.1 memmove函数的使用2.2 memmove函数的模拟实现 3. memset函数4. memcmp函数 1. memcpy函数的使用和模拟实现 1.1 memcpy函数的使用 memcpy函数的原形voi…

英语音标与重弱读

英语中,比较重要的是音标。但事实上,我们对音标的学习还是比较少的,对它的理解也是比较少的。 一、音标 2个半元音 [w][j] 5个长元音:[i:] [ə:] [ɔ:] [u:] [ɑ:] 7个短元音:[i] [ə] [ɔ] [u] [] [e] [ʌ] 8个双元音…

leetcode-32. 最长有效括号

题目描述 给你一个只包含 ( 和 ) 的字符串,找出最长有效(格式正确且连续)括号 子串 的长度。 示例 1: 输入:s "(()" 输出:2 解释:最长有效括号子串是 "()"示例 2&…

压力测试指南-压力测试基础入门

压力测试基础入门 在当今快速迭代的软件开发环境中,确保应用程序在高负载情况下仍能稳定运行变得至关重要。这正是压力测试大显身手的时刻。本文将带领您深入了解压力测试的基础知识,介绍实用工具,并指导您设计、执行压力测试,最…

ffmpeg 结合 opencv 显示ps流文件

存储的ps 流文件如何显示 使用ffmpeg 和 opencv 做demo 结合opencv 和 ffmpeg 显示ps文件 // showps.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //#include <iostream> #include <opencv2/opencv.hpp>extern "C" { #inc…

【openwrt-21.02】T750 openwrt switch划分VLAN之后网口插拔状态异常问题分析及解决方案

Openwrt版本 NAME="OpenWrt" VERSION="21.02-SNAPSHOT" ID="openwrt" ID_LIKE="lede openwrt" PRETTY_NAME="OpenWrt 21.02-SNAPSHOT" VERSION_ID="21.02-snapshot" HOME_URL="https://openwrt.org/" …

第100+26步 ChatGPT学习:概率校准 Bayesian Binning into Quantiles

基于Python 3.9版本演示 一、写在前面 最近看了一篇在Lancet子刊《eClinicalMedicine》上发表的机器学习分类的文章&#xff1a;《Development of a novel dementia risk prediction model in the general population: A large, longitudinal, population-based machine-learn…

【2】图像视频的加载和显示

文章目录 【2】图像视频的加载和显示一、代码在哪写二、创建和显示窗口&#xff08;一&#xff09;导入OpenCV的包cv2&#xff08;二&#xff09;创建窗口&#xff08;三&#xff09;更改窗口大小 & 显示窗口&#xff08;四&#xff09;等待用户输入补充&#xff1a;ord()函…

Gateway和VirtualService

在 Istio 服务网格中&#xff0c;Gateway 和 VirtualService 是两个关键的配置对象&#xff0c;它们分别用于定义入站流量的接入点和路由规则。下面详细介绍这两个配置对象的功能及其相互关系。 Gateway Gateway 是 Istio 中用于定义入站流量接入点的配置对象。它描述了外部流…

正则表达式的使用规则

1.介绍 正则表达式&#xff08;Regular Expression&#xff09;是一种强大的文本模式匹配工具&#xff0c;它使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。正则表达式可以用于文本搜索、文本替换等场景。 2.基本语法 正则表达式由普通字符&#xff0…

vue框架学习-- 父子页面 参数方法调用

一、父组件向子组件传递参数 在Vue中&#xff0c;父组件向子组件传递参数是一种非常常见的通信方式&#xff0c;这通常通过props来实现。props允许父组件向子组件传递数据&#xff0c;并且这些数据是单向的&#xff0c;即子组件不能直接修改由父组件传递的数据。但是&#xff…

【Unity踩坑】Unity更新Google Play结算库

一、问题描述&#xff1a; 在Google Play上提交了app bundle后&#xff0c;提示如下错误。 我使用的是Unity 2022.01.20f1&#xff0c;看来用的Play结算库版本是4.0 查了一下文档&#xff0c;Google Play结算库的维护周期是两年。现在需要更新到至少6.0。 二、更新过程 1. 下…

【视频目标分割-2024CVPR】Putting the Object Back into Video Object Segmentation

Cutie 系列文章目录1 摘要2 引言2.1背景和难点2.2 解决方案2.3 成果 3 相关方法3.1 基于记忆的VOS3.2对象级推理3.3 自动视频分割 4 工作方法4.1 overview4.2 对象变换器4.2.1 overview4.2.2 Foreground-Background Masked Attention4.2.3 Positional Embeddings 4.3 Object Me…

cpp,git,unity学习

c#中的? 1. 空值类型&#xff08;Nullable Types&#xff09; ? 可以用于值类型&#xff08;例如 int、bool 等&#xff09;&#xff0c;使它们可以接受 null。通常&#xff0c;值类型不能为 null&#xff0c;但是通过 ? 可以表示它们是可空的。 int? number null; // …

使用 SSH 连接 Docker 服务器:IntelliJ IDEA 高效配置与操作指南

使用 SSH 连接 Docker 服务器&#xff1a;IntelliJ IDEA 高效配置与操作指南 本文详细介绍了如何在 2375 端口未开放的情况下&#xff0c;通过 SSH 连接 Docker 服务器并在 Idea 中进行开发。通过修改用户权限、生成密钥对以及配置 SSH 访问&#xff0c;用户可以安全地远程操作…

NASA数据集:ATLAS/ICESat-2 L3B 每日和每月网格化海冰自由面高度,第 4 版

目录 简介 摘要 代码 引用 网址推荐 0代码在线构建地图应用 机器学习 ATLAS/ICESat-2 L3B Daily and Monthly Gridded Sea Ice Freeboard, Version 4 简介 ATLAS/ICESat-2 L3B Daily and Monthly Gridded Sea Ice Freeboard, Version 4数据是由NASA的ATLAS&#xff08…

Ubuntu 系统崩了,如何把数据拷下来

问题描述&#xff1a; Linux系统中安装输入法后&#xff0c;重启后&#xff0c;导致系统无法进入&#xff0c;进入 recovery mode下的resume 也启动不了&#xff0c;所以决定将需要的东西复制到U盘 解决方案&#xff1a; 1.重启ubuntu&#xff0c;随即点按Esc进入grub菜单&am…

OpenStack Yoga版安装笔记(十五)Horizon安装

1、官方文档 OpenStack Installation Guidehttps://docs.openstack.org/install-guide/ 本次安装是在Ubuntu 22.04上进行&#xff0c;基本按照OpenStack Installation Guide顺序执行&#xff0c;主要内容包括&#xff1a; 环境安装 &#xff08;已完成&#xff09;OpenStack…

HarmonyOS/OpenHarmony Audio 实现音频录制及播放功能

关键词&#xff1a;audio、音频录制、音频播放、权限申请、文件管理 在app的开发过程中时常会遇见一些需要播放一段音频或进行语音录制的场景&#xff0c;那么本期将介绍如何利用鸿蒙 audio 模块实现音频写入和播放的功能。本次依赖的是 ohos.multimedia.audio 音频管理模块&am…