python VTK PyQt5 VTK环境搭建 创建 渲染窗口及三维模型,包含 三维模型交互;

news2025/1/17 13:57:14

 

目录

Part1. VTK 介绍

Part2. PyQt5 VTK环境搭建 安装Anaconda 自带Python

Anaconda下载

安装PyQt5

安装 VTK

Part3 :PyQt VTK 结合样例:


Part1. VTK 介绍

VTK(visualization toolkit)是一个开源的免费软件系统,主要用于三维计算机图形学、图像处理和可视化。Vtk 是在面向对象原理的基础上设计和实现的,它的内核是用 C++ 构建的,包含有大约 250,000 行代码,2000 多个类,还包含有几个转换界面,因此也可以自由的通过 Java,Tcl/Tk 和 Python 各种语言使用 VTK。

VTK 是一个开放源码、自由获取的软件系统,全世界的数以千计的研究人员和开发人员用它来进行 3D 计算机图形,图像处理,可视化。VTK 包含一个 c++类库,众多的翻译接口层,包括 Tcl/Tk,Java,Python。 Visualization Toolkit 是一个用于可视化应用程序构造与运行的支撑环境,它是在三维函数库 OpenGL 的基础上采用面向对象的设计方法发展起来的,它将我们在可视化开发过程中会经常遇到的细节屏蔽起来,并将一些常用的算法封装起来。比如 Visualization Toolkit 将我们在表面重建中比较常见的 MarchingCubes 算法封装起来,以类的形式给我们以支持,这样我们在对三维规则点阵数据进行表面重建时就不必再重复编写 MarchingCubes 算法的代码,而直接使用 Visualization Toolkit 中已经提供的 vtkMarchingCubes 类。Visualization Toolkit 是给从事可视化应用程序开发工作的研究人员提供直接的技术支持的一个强大的可视化开发工具。
 

Part2. PyQt5 VTK环境搭建 安装Anaconda 自带Python

Anaconda是一个开源的Python发行版本,用来管理Python相关的包,安装Anaconda可以很方便的切换不同的环境,使用不同的深度学习框架开发项目;

这里我们详细介绍安装Anaconda有以下几个原因:

1.方便地安装Python及其相关工具和库:

Anaconda是一个数据科学平台,它内置了Python解释器和大量的数据科学工具和库,包括NumPy、Pandas和Matplotlib等。这使得初学者或专业人员可以更快速地开始Python编程和数据分析,并且不需要逐个安装每个软件包和库。

2.管理Python环境:

Anaconda允许用户创建多个独立的Python环境,这样可以使开发人员在不同的项目中使用不同的Python版本和库。这对于开发人员很有用,因为不同的项目可能需要不同的环境设置,例如不同的Python版本或不同版本的库。

3.跨平台支持:

Anaconda可在Windows、Linux和Mac等操作系统上运行,使得开发人员可以在不同平台上开发和运行相同的代码。

4.社区支持:

Anaconda由庞大的社区支持,社区提供了大量的文档、示例代码和教程,这对于初学者来说非常有用。

所以说,安装Anaconda能够帮助您更快速地开始Python编程、数据分析和机器学习,同时也使得管理Python环境变得更加方便。

Anaconda下载

首先需要到Anaconda的官网下载适合自己系统的版本。目前,Anaconda支持Windows、Mac OS X和Linux三种操作系统。

Anaconda官网:

Free Download | Anaconda

 下载好的Anaconda安装包,双击安装包;

建议Python 安装使用最新的版本就可以;

安装PyQt5

pip install PyQt5

安装PyQt5-tools

pip install PyQt5-tools

安装 VTK

pip install vtk

Part3 :PyQt VTK 结合样例:

创建 渲染窗口及三维模型,包含 三维模型交互;

import sys
from PyQt5 import (QtWidgets, QtCore)
import vtk
from vtk.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MyPyQtVTK")
        MainWindow.resize(600, 600)
        self.centralWidget = QtWidgets.QWidget(MainWindow)
        self.gridlayout = QtWidgets.QGridLayout(self.centralWidget)
        self.vtkWidget = QVTKRenderWindowInteractor(self.centralWidget)
        self.gridlayout.addWidget(self.vtkWidget, 0, 0, 1, 1)
        MainWindow.setCentralWidget(self.centralWidget)


class MyPyQtVTKWindow(QtWidgets.QMainWindow):

    def __init__(self, parent=None):
        QtWidgets.QMainWindow.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ren = vtk.vtkRenderer()
        self.ui.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.ui.vtkWidget.GetRenderWindow().GetInteractor()

        # Create source
        source = vtk.vtkSphereSource()
        source.SetCenter(0, 0, 0)
        source.SetRadius(3.0)

        # Create a mapper
        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInputConnection(source.GetOutputPort())

        # Create an actor
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)

        self.ren.AddActor(actor)


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = MyPyQtVTKWindow()
    window.show()
    window.iren.Initialize()  # Need this line to actually show the render inside Qt
    sys.exit(app.exec_())

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

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

相关文章

All In One!Meta发布SeamlessM4T,支持100种语言,35种语音、开源、在线体验!

多语言识别翻译的研究一直都是学术界研究的重点。目前全球有几千种语言,在全球化背景下不同语言人群之间的交流越来越密切,然而学习一门外语的成本是非常大的。前两年的研究主要集中在一对一、一对多的研究,然而当面对这么多的语言时&#xf…

windows系统服务器在不解锁屏幕不输入密码的前提下,电脑通电开机启动程序。

在控制面板中找到“管理工具”中的 “任务计划程序”,打开“任务计划程序”窗口。如图: 双击打开任务计划程序,空白出右键创建基本任务,或者点击最右侧的创建基本任务。 输入名称,点击下一步。 先选择计算机启动时&a…

二维数组和二维数组指针做函数参数

二维数组形参定义&#xff1a;char (*p)[3]&#xff1b; 二维数组指针形参定义&#xff1a;char (*p)[][3]&#xff1b; 例程&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h> int myPrintf4(char (*p)[3],int *dep,int * len){…

分布式事务(6):基于LCN框架解决分布式事务

1 LCN简介 LCN官网 https://www.txlcn.org/ "LCN并不生产事务&#xff0c;LCN只是本地事务的搬运工" 兼容 dubbo、springcloud、motan 框架&#xff0c;支持各种关系型数据库 2 LCN框架底层实现原理 https://github.com/codingapi/tx-lcn/wiki/LCN%E5%8E%9F%E7%9…

AMBA_AXI Protocol Introduction

AXI Protocol Introduction 1. AXI协议特性 2. AXI协议关键特性 3. AXI 协议结构 4. Interface and interconnect 5. Register slicesAMBA AXI协议为主机与从机组件之间的通信提供高性能&#xff0c;高频系统设计 1. AXI协议特性 适用于高带宽&#xff0c;低延迟设计不使用复…

在VScode中执行npm、yarn命令报错解

在VScode中执行npm、yarn命令报错解 我使用的是vnm安装好npm&#xff0c;在WindowsR 界面是可以运行查看出版本的&#xff1b;但是在VScode中报错。 查了很多资料&#xff0c;我这种情况的原因是在VScode中默认使用的终端是Powershell&#xff0c;然后我切换到系统的cmd则可以…

NO.01 如何在Spring配置文件中获取Bean

目录 1、前言 1.1 IOC容器在Spring中的实现 1.2 ApplicationContext的主要实现类 2、工作准备 2.1 创建Module工程配置以来信息 2.2 创建bean所对应的类 2.3 创建Spring的配置文件&#xff0c;命名为applicationContext 3、从IOC容器中获取Bean 3.1 根据id获取bean 3.…

由JDK bug引发的线上OOM

由JDK bug引发的线上OOM 最近生产环境的一个应用忽然发生了OOM&#xff0c;还好是业务低峰期&#xff0c;没有导致什么严重问题&#xff0c;下面记录下本次排查的过程&#xff1b; 故障临时处理 在某天下午&#xff0c;正在愉快的写代码时&#xff0c;忽然看到业务反馈支付服…

嵌入式Linux人脸检测libfacedetection

人脸检测 此库依赖Opencv&#xff0c;所以首先要移植Opencv到板子上。 笔者使用LVGL搭建了一个界面&#xff0c;界面有些卡顿&#xff08;主要原因是文件存取较慢&#xff09;&#xff0c;演示效果如下&#xff1a; OpenCV 首先要交叉编译Opencv 参考&#xff1a;https://…

燃气管网监测系统,24小时守护燃气安全

随着社会的发展和人民生活水平的提高&#xff0c;燃气逐渐成为人们日常生活和工作中不可或缺的一部分。然而&#xff0c;近年来&#xff0c;屡屡发生的燃气爆炸问题&#xff0c;也让人们不禁对燃气的安全性产生了担忧。因此&#xff0c;建立一个高效、实时、准确的燃气管网监测…

光谱响应函数概念与等效遥感反射率的计算

本期干货来介绍一下遥感领域非常重要的一个概念——光谱响应函数。 人眼内部存在三种视锥细胞&#xff08;L、M、S&#xff09;&#xff0c;对不同波段的光有不同的敏感度&#xff0c;三种视锥细胞信号的复合构成了我们眼中五彩斑斓的世界。如下图所示&#xff0c;以菠菜&#…

抖音短视频seo矩阵系统源代码技术开发方案分享

一、 功能结构设计 1. 视频管理&#xff1a;对于不同平台&#xff0c;不同账号&#xff0c;不同格式&#xff0c;不同内容短视频进行管理&#xff0c;素材分组等&#xff0c;实现多资源数据汇和统一管理 2. 数据挖掘分析&#xff1a;通过数据挖掘和数据分析&#xff0c;提供数…

leetcode 17.电话号码字母组合

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;https://leetcode.cn/problems/letter-combinations-of-a-phone-number/description/ 代码&#xff1a; class Solution { public:const char * letterCombine(int i) {static const char *letter[] { "" , …

Nexus3下载使用

下载 Nexus 3 1. 进入 Nexus 3.x 下载页面&#xff08;目前最新版是 3.59.0-01&#xff09;&#xff0c;根据操作选择相应的版本进行下载。 2. 将下载的安装包解压到本地&#xff0c;可获得 nexus-3.59.0-01 和 sonatype-work 两个目录 其中&#xff1a; nexus-3.59.0-01&…

PE输入表DLL注入

PE输入表DLL注入 一.实现效果 启动notepad.exe时能够加载自己编写的dll. 最终效果如图所示 下面逐步讲解并附带源码 二.编写DLL 自行编写DLL,导出一个函数,弹出对话框 // MsgDLL66.cpp : Defines the entry point for the DLL application. //#include "stdafx.h"…

Zoho CRM有哪些优势?

CRM能帮助企业管理客户信息、跟进销售机会、提高客户转化&#xff0c;显著提升企业的竞争力&#xff0c;是企业发展的重要工具。市场上有很多CRM品牌&#xff0c;企业该如何选型&#xff1f;这里给大家分享一个不错的CRM品牌 Zoho CRM有哪些优势&#xff1f; 功能全面&#x…

jQuery-使用、选择器、属性、样式、文档、循环等操作

jQuery jQuery简介 jQuery是一个快速、简洁的JavaScript框架&#xff0c;是继Prototype之后又一个优秀的JavaScript代码库&#xff08;框架&#xff09;于2006年1月由[John Resig](https://baike.baidu.com/item/John Resig/6336344?fromModulelemma_inlink)发布。jQuery设计…

Docker安装ES+kibana8.9.1

参考&#xff1a;基于Docker安装Elasticsearch【保姆级教程、内含图解】_docker elasticsearch_Acloasia的博客-CSDN博客 创建网络 docker network create es-net 基于Docker安装Elasticsearch 拉取镜像 docker pull elasticsearch:8.9.1 挂载文件 mkdir -p /usr/local/e…

vue使用vant中的popup层,在popup层中加搜索功能后,input框获取焦点 ios机型的软键盘不会将popup顶起来的问题

1.使用vant的popup弹出层做了一个piker的选择器,用户需要在此基础上增加筛选功能。也就是输入框 2.可是在ios机型中,input框在获取焦点以后,ios的软键盘弹起会遮盖住我们的popup层,导致体验不是很好 3.在大佬的解答及帮助下,采用窗口滚动的方式解决此方法 <Popupv-model&q…

NGINX的速率限制(限流)

NGINX 的速率限制&#xff08;限流&#xff09; NGINX最有用但经常被误解和配置错误的功能之一是限流。它允许您限制用户在给定时间段内可以发出的HTTP请求量。 限流可以用于安全目的&#xff0c;例如减慢暴力破解密码的攻击。它可以通过限制请求速率为真实用户的典型值来帮助…