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

news2024/12/29 10:55:16

《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 MainWindow

class 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, QtWidgets


class 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.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))

ui文件在下载链接中

三、资源下载

下载链接

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

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

相关文章

高通Android 12 push framework.jar和service.jar

1、Android framework.jar和service.jar替换注意事项 2、单编 adb push service.jar脚本 如下 adb root adb disable-verity adb remountadb push services.jar system/framework adb push services.jar.prof system/framework adb push oat/arm64/services.art /system/fram…

重磅首发!大语言模型LLM学习路线图来了!

ChatGPT的出现在全球掀起了AI大模型的浪潮,2023年可以被称为AI元年,AI大模型以一种野蛮的方式,闯入你我的生活之中。 从问答对话到辅助编程,从图画解析到自主创作,AI所展现出来的能力,超出了多数人的预料&…

酒店智能门锁SDK接口pro[V10] 对接酒店收银-模块封装C#-SAAS本地化-未来之窗行业应用跨平台架构

一、代码 public class CyberWin_hoteldoor_prousbv10_2024{[DllImport("024.dll", CharSet CharSet.Ansi, CallingConvention CallingConvention.StdCall, EntryPoint "GetDLLVersion")]public static extern int GetDLLVersion(StringBuilder sDllVer…

新手答疑 | 零基础该怎么学习嵌入式?嵌入式Linux学习路线是什么?嵌入式开发板推荐?

很多初学者想要涉足嵌入式Linux开发领域,但往往在刚入门阶段,会因为初次接触到大量复杂的概念术语和深奥的技术文档感到压力重重,面对这些内容不知从何下手,感到十分迷茫,网上的内容也纷繁复杂,没有清晰的学…

【STM32】SPI回顾

一、定义 SPI是Motorola首先提出的全双工四线同步串行外围接口,采用主从模式(Master-Slave)架构。 二、单机与多机通信 4线SPI器件有四个信号:时钟(SPI CLK, SCLK)、主机输出从机输入(MOSI)、主机输入从机输出(MISO)、片选(CS/N…

怎么备考2024年11月软考高级系统架构师 ?

分享下我的系统架构设计师考证之路,希望能对即将参加考试的小伙伴们带来一些启示和帮助。 先贴出自己软考系统架构设计师成绩,备考一次就通过了考试。 一、架构考试教材 架构考试教材目前使用的是系统架构设计师教程(第2版)&…

进程(一万字学习笔记)

------------------------本文为学习进程记录的学习笔记,如有问题欢迎指正 -------------------------- 目录 1.定义 2.进程的种类 2.进程的内存布局 3.进程控制块(PCB) 4.进程源语 fork() 写时复制 exec() execl函数 wait() #进…

GloVe(全局词向量嵌入)

目录 GloVe简介 1.使用预训练的GloVe的词向量(英文文本的用的最多) 2.自己训练Glove词向量 3. 知识点 GloVe简介 GloVe的全称叫Global Vectors for Word Representation,它是一个基于全局词频统计(count-based & overall statistics)的…

OpenAI为高级语音模式添加五种声音,已正式推出!华为发布业界首个L4自动驾驶网络|AI日报

文章推荐 法国亿万富翁加入字节跳动董事会!美国总统候选人哈里斯、特朗普纷纷向人工智能和加密货币产业示好|AI日报 今日热点 华为发布业界首个L4自动驾驶网络——星河AI自动驾驶网络解决方案 在华为全联接大会2024“星河 AI 自动驾驶网络”论坛上&a…

【深度学习】深度学习框架有哪些及其优劣势介绍

本文摘要 在深度学习的开发中,有许多流行的深度学习框架可供使用。本文主要介绍其中一些常见的深度学习框架以及其优劣势。 注:个人观点,仅供学习参考。 原文地址:【深度学习】深度学习框架有哪些及其优劣势介绍 TensorFlow 开发…

教育行业知乎广告投放,如何开户?

随着教育行业的竞争日益激烈,作为一家致力于提供高质量教育资源的企业,如何在众多竞争者中脱颖而出,成为客户心中的首选呢?知乎作为高质量人群平台,无疑是教育行业品牌推广的理想平台。它不仅汇聚了大量求知欲旺盛的用…

分享:一个小学四则运算出题工具

前言 目的在于辅助家长对孩子小学数学的教导。功能分六个部分:计算、加法、减法、乘法、除法和混合,其中,计算的功能在于计算特定算式的结果以及竖式过程,其他的则是基于参数生成指定数目的四则算式,并给出结果和竖式…

CSS边框

CSS 中的边框是围绕着元素内容和内边距的一条或多条线段,您可以自定义这些线段的样式、宽度以及颜色。您可以通过下面几个属性分别定义边框的样式、宽度和颜色: border-style:设置边框的样式,例如实线、虚线等;border…

召回06 双塔模型two-tower(DSSM)

双塔模型的结构 相比于矩阵补充模型,双塔模型考虑了id之外的多种特征作为输入。 对于每个离散特征用单独的enbadding层得到向量,对于性别等类别较少的特征直接使用one-hot编码;对于连续特征,最简单的直接归一化,对于…

【2024.9.27】[JSOI2010] 部落划分

题目描述 题目分析 将野人居住地看作顶点,之间的距离看作边,部落看作集合,考虑用最小生成树Kruskal算法解决,同一个部落里的居住点就构成一个连通分量。使用Kruskal算法时,设初始部落数为,每有两个原本不在…

Splashtop 在2024年 CybersecAsia 读者之选奖项评选中荣获新星奖

2024年9月26日 新加坡 安全远程访问和支持解决方案领域的领先企业 Splashtop 在第五届 CybersecAsia 读者之选奖项评选中荣获新星奖。该奖项的评选人员包括首席信息安全官、技术领袖和网络安全从业者,旨在表彰亚太地区网络安全领袖在行业中发挥的关键作用、取得的创…

FileZilla Server 黑白单移除

我使用FileZilla Server 搭建了一个FTP服务在内网使用,主要用于做数据备份的。 有一台服务器一直可以正常连接,突然有一天不能连接了。一开始我以为是FTP服务器出问题了,就一直没管。后来我测试了一下其他IP都可以正常连接FTP服务器&#xff…

高校教师成果管理小程序的设计与实现springboot(lw+演示+源码+运行)

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对高校教师成果信息管理混乱,出错率高,信息安全…

连锁收银系统的五大功能 选择开源收银系统三要素

连锁收银系统的五大功能,很多新手是不清楚的,老手也只是知道一些大概,今天,商淘云为大家分享收银系统的五大功能,尤其是第五个,大部分人不清楚,有的企业前面选了不合适的收银系统,导…

漏洞挖掘 | 发现隐藏子域的虚拟主机

高效虚拟主机发现的工具和技术 在进行外部渗透测试或漏洞赏金狩猎时,我们从各个角度探索目标系统,收集尽可能多的信息来识别潜在的攻击向量。这涉及识别所有可用的资产、域和子域。 在这个过程中,我们关注的事情之一就是枚举虚拟主机。通过…