返回顶部
首页 > 资讯 > 后端开发 > Python >Python中如何利用PyVista进行mesh的色彩映射
  • 379
分享到

Python中如何利用PyVista进行mesh的色彩映射

2023-06-14 10:06:15 379人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章给大家分享的是有关python中如何利用PyVista进行mesh的色彩映射的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。PyVista简介PyVista是什么PyVista 是一个:VTK for hu

这篇文章给大家分享的是有关python中如何利用PyVista进行mesh的色彩映射的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

PyVista简介

PyVista是什么

PyVista 是一个:

  • VTK for humans”可视化工具包(VTK)的高级api

  • 空间数据的网格数据结构与滤波方法

  • 使3D绘图更加简单,可用于大型/复杂数据的图像化

PyVista(以前的vtki)是可视化工具包(VTK)的一个助手模块,它采用了一种不同的方法,通过NumPy和直接数组访问与VTK进行接口。这个包提供了一个Python化的、文档化良好的接口,展示了VTK强大的可视化后端,以方便对空间引用的数据集进行快速原型化、分析和可视化集成。

该模块可用于演示文稿和研究论文的科学绘图,以及其他依赖网格的Python模块的支持模块。

参考:https://docs.pyvista.org/index.html

GitHub

官方教程

pyvista和其他3D可视化工具比较

Python中如何利用PyVista进行mesh的色彩映射

参考:Https://github.com/pyvista/pyvista/issues/146

pyvista使用

安装

pip install pyvista -i https://pypi.tuna.tsinghua.edu.cn/simple

I/O读取及可视化

mesh类型

pyvista支持读取大多数常见的mesh文件类型,比如PLY,VTK,STL ,OBJ ,BYU 等,一些不常见的mesh文件类型,比如FEniCS/Dolfin_ XML fORMat

(很遗憾,pyvista不支持点云PCD格式,不过可以通过pcdpy、pclpy、python-pcl等库来读取pcd文件)

import pyvista as pv# 读取mesh = pv.read('pointCloudData/data.vtk')# 显示mesh.plot()# 其他类似mesh = pv.read('pointCloudData/data.ply')……

图片类型

支持读取图片类型数据JPEG, TIFF, PNG等

# 读取image = pv.read('my_image.jpg')# 显示image.plot(rgb=True, cpos="xy")# 其余图片类型类似……

mesh彩色映射

项目中需要用到根据高度来对mesh进行彩色映射,在pyvista中大概有四种方法

自定义

代码

import pyvista as pvimport matplotlib.pyplot as pltfrom matplotlib.colors import ListedColormapimport numpy as npdef mesh_cmp_custom(mesh, name): """ 自定义色彩映射 :param mesh: 输入mesh :param name: 比较数据的名字 :return: """ pts = mesh.points mesh[name] = pts[:, 1] # Define the colors we want to use blue = np.array([12 / 256, 238 / 256, 246 / 256, 1]) black = np.array([11 / 256, 11 / 256, 11 / 256, 1]) grey = np.array([189 / 256, 189 / 256, 189 / 256, 1]) yellow = np.array([255 / 256, 247 / 256, 0 / 256, 1]) red = np.array([1, 0, 0, 1]) c_min = mesh[name].min() c_max = mesh[name].max() c_scale = c_max - c_min mapping = np.linspace(c_min, c_max, 256) newcolors = np.empty((256, 4)) newcolors[mapping >= (c_scale * 0.8 + c_min)] = red newcolors[mapping < (c_scale * 0.8 + c_min)] = grey newcolors[mapping < (c_scale * 0.55 + c_min)] = yellow newcolors[mapping < (c_scale * 0.3 + c_min)] = blue newcolors[mapping < (c_scale * 0.1 + c_min)] = black # Make the colormap from the listed colors my_colormap = ListedColormap(newcolors) mesh.plot(Scalars=name, cmap=my_colormap)if __name__ == '__main__': mesh = pv.read('pointCloudData/1.ply') mesh_cmp_custom(mesh, 'y_height')

效果:

Python中如何利用PyVista进行mesh的色彩映射

使用pyvista自带的cmp

函数mesh.plot(scalars=name, cmap='viridis_r')

其中cmap支持的样式:

‘Accent', ‘Accent_r', ‘Blues', ‘Blues_r', ‘BrBG', ‘BrBG_r', ‘BuGn', ‘BuGn_r', ‘BuPu', ‘BuPu_r', ‘CMRmap', ‘CMRmap_r', ‘Dark2', ‘Dark2_r', ‘GnBu', ‘GnBu_r', ‘Greens', ‘Greens_r', ‘Greys', ‘Greys_r', ‘OrRd', ‘OrRd_r', ‘Oranges', ‘Oranges_r', ‘PRGn', ‘PRGn_r', ‘Paired', ‘Paired_r', ‘Pastel1', ‘Pastel1_r', ‘Pastel2', ‘Pastel2_r', ‘PiYG', ‘PiYG_r', ‘PuBu', ‘PuBuGn', ‘PuBuGn_r', ‘PuBu_r', ‘PuOr', ‘PuOr_r', ‘PuRd', ‘PuRd_r', ‘Purples', ‘Purples_r', ‘RdBu', ‘RdBu_r', ‘RdGy', ‘RdGy_r', ‘RdPu', ‘RdPu_r', ‘RdYlBu', ‘RdYlBu_r', ‘RdYlGn', ‘RdYlGn_r', ‘Reds', ‘Reds_r', ‘Set1', ‘Set1_r', ‘Set2', ‘Set2_r', ‘Set3', ‘Set3_r', ‘Spectral', ‘Spectral_r', ‘Wistia', ‘Wistia_r', ‘YlGn', ‘YlGnBu', ‘YlGnBu_r', ‘YlGn_r', ‘YlOrBr', ‘YlOrBr_r', ‘YlOrRd', ‘YlOrRd_r', ‘afmhot', ‘afmhot_r', ‘autumn', ‘autumn_r', ‘binary', ‘binary_r', ‘bone', ‘bone_r', ‘brg', ‘brg_r', ‘bwr', ‘bwr_r', ‘cividis', ‘cividis_r', ‘cool', ‘cool_r', ‘coolwarm', ‘coolwarm_r', ‘copper', ‘copper_r', ‘cubehelix', ‘cubehelix_r', ‘flag', ‘flag_r', ‘GISt_earth', ‘gist_earth_r', ‘gist_gray', ‘gist_gray_r', ‘gist_heat', ‘gist_heat_r', ‘gist_ncar', ‘gist_ncar_r', ‘gist_rainbow', ‘gist_rainbow_r', ‘gist_stern', ‘gist_stern_r', ‘gist_yarg', ‘gist_yarg_r', ‘gnuplot', ‘gnuplot2', ‘gnuplot2_r', ‘gnuplot_r', ‘gray', ‘gray_r', ‘hot', ‘hot_r', ‘hsv', ‘hsv_r', ‘inferno', ‘inferno_r', ‘jet', ‘jet_r', ‘magma', ‘magma_r', ‘nipy_spectral', ‘nipy_spectral_r', ‘ocean', ‘ocean_r', ‘pink', ‘pink_r', ‘plasma', ‘plasma_r', ‘prism', ‘prism_r', ‘rainbow', ‘rainbow_r', ‘seismic', ‘seismic_r', ‘spring', ‘spring_r', ‘summer', ‘summer_r', ‘tab10', ‘tab10_r', ‘tab20', ‘tab20_r', ‘tab20b', ‘tab20b_r', ‘tab20c', ‘tab20c_r', ‘terrain', ‘terrain_r', ‘turbo', ‘turbo_r', ‘twilight', ‘twilight_r', ‘twilight_shifted', ‘twilight_shifted_r', ‘viridis', ‘viridis_r', ‘winter', ‘winter_r'

代码

import pyvista as pvdef mesh_cmp(mesh, name): """  使用进行plot自带的色彩映射  :param mesh: 输入mesh  :param name: 比较数据的名字  :return: """ pts = mesh.points mesh[name] = pts[:, 1] mesh.plot(scalars=name, cmap='viridis_r') if __name__ == '__main__': mesh = pv.read('vtkData/airplane.ply') mesh_cmp(mesh, 'y_height')

效果

Python中如何利用PyVista进行mesh的色彩映射

使用Matplotlib的cmp

代码

import pyvista as pvimport matplotlib.pyplot as pltdef mesh_cmp_mpl(mesh, name): """  使用Matplotlib进行色彩映射  :param mesh: 输入mesh  :param name: 比较数据的名字  :return:  """ pts = mesh.points mesh[name] = pts[:, 1] mlp_cmap = plt.cm.get_cmap("viridis", 25) mesh.plot(scalars=name, cmap=mlp_cmap) if __name__ == '__main__': mesh = pv.read('vtkData/airplane.ply') mesh_cmp_mpl(mesh, 'y_height')

效果

Python中如何利用PyVista进行mesh的色彩映射

使用colorcet的cmp

需要先安装colorcet:

pip install colorcet

使用方法和上面几种方法类似,若想使用colorcet的colormaps中的hot:

mesh.plot(scalars=name, cmap=“hot”)

代码

def mesh_cmp_colorcet(mesh, name): """  使用进行colorcet进行色彩映射  :param mesh: 输入mesh  :param name: 比较数据的名字  :return: """ pts = mesh.points mesh[name] = pts[:, 1] mesh.plot(scalars=name, cmap=colorcet.fire) if __name__ == '__main__': mesh = pv.read('vtkData/airplane.ply') mesh_cmp_colorcet(mesh, 'y_height')

效果:

Python中如何利用PyVista进行mesh的色彩映射

感谢各位的阅读!关于“Python中如何利用PyVista进行mesh的色彩映射”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Python中如何利用PyVista进行mesh的色彩映射

本文链接: https://lsjlt.com/news/269834.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python中如何利用PyVista进行mesh的色彩映射
    这篇文章给大家分享的是有关Python中如何利用PyVista进行mesh的色彩映射的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。PyVista简介PyVista是什么PyVista 是一个:VTK for hu...
    99+
    2023-06-14
  • Python利用PyVista进行mesh的色彩映射的实现
    目录PyVista简介PyVista是什么pyvista和其他3D可视化工具比较pyvista使用安装I/O读取及可视化图片类型mesh彩色映射使用pyvista自带的cmp使用Ma...
    99+
    2024-04-02
  • Python+OpenCV中如何利用K-Means 聚类进行色彩量化
    小编给大家分享一下Python+OpenCV中如何利用K-Means 聚类进行色彩量化,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!利用 K-Means...
    99+
    2023-06-21
  • mybatis中的SQL怎么利用注解进行映射
    今天就跟大家聊聊有关mybatis中的SQL怎么利用注解进行映射,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。结果集分页有时我们需要处理海量数据,由于数据量太大,所以不能一次取出所有...
    99+
    2023-05-31
    mybatis
  • Python+OpenCV实战之利用 K-Means 聚类进行色彩量化
    目录前言利用 K-Means 聚类进行色彩量化完整代码显示色彩量化后的色彩分布前言 K-Means 聚类算法的目标是将 n 个样本划分(聚类)为 K 个簇,在博文《OpenCV与机器...
    99+
    2024-04-02
  • mybatis中的映射文件怎么利用mapper接口进行加载
    mybatis中的映射文件怎么利用mapper接口进行加载?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。通过 mapper 接口加载映射文件,这对于后面 ssm三大框架 的整合...
    99+
    2023-05-31
    mybatis mapper pp
  • 如何利用Python将彩色图像转为灰度图像
    小编给大家分享一下如何利用Python将彩色图像转为灰度图像,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!第一种方法Python的cv2库中自带彩色转灰度的方法,...
    99+
    2023-06-22
  • 如何进行ARM64 Linux内核页表的块映射
    这期内容当中小编将会给大家带来有关如何进行ARM64 Linux内核页表的块映射,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。内核文档Documentation/arm64/memory.rst描述了AR...
    99+
    2023-06-15
  • 如何进行Service Mesh中的Linkerd 和Istio框架对比
    本篇文章给大家分享的是有关如何进行Service Mesh中的Linkerd 和Istio框架对比,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。引言:各个细分行业和领域的组织机...
    99+
    2023-06-04
  • three.js如何利用射线Raycaster进行碰撞检测
    这篇文章主要为大家展示了“three.js如何利用射线Raycaster进行碰撞检测”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“three.js如何利用射线R...
    99+
    2024-04-02
  • 如何在Android中利用TextView对字体颜色进行更改
    如何在Android中利用TextView对字体颜色进行更改?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Android 实现不同字体颜色的TextView实现代码:packa...
    99+
    2023-05-31
    android roi textview
  • 如何在Laravel中使用对象关系映射(ORM)进行数据库操作?
    Laravel是一款流行的PHP框架,它提供了许多方便的工具和库来简化Web应用程序的开发过程。其中一个重要的工具就是对象关系映射(ORM),它可以帮助开发人员在Laravel中进行数据库操作。 ORM是一种将关系型数据库中的表映射到面向对...
    99+
    2023-09-25
    编程算法 laravel 对象
  • 如何利用OpenCV进行特征(颜色、形状)提取
    目录图像处理1. 颜色2. 形状总结图像处理 图像处理所做的只是从图像中提取有用的信息,从而减少数据量,但保留描述图像特征的像素。 下面从图像中提取颜色、形状和纹理特征的方法开始 1...
    99+
    2024-04-02
  • 如何利用python进行接口测试
    这篇文章主要讲解了“如何利用python进行接口测试”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何利用python进行接口测试”吧!接口测试的坑第一个坑:POST 和 GET----GE...
    99+
    2023-06-30
  • python中如何利用selenium进行浏览器爬虫
    这篇文章给大家介绍python中如何利用selenium进行浏览器爬虫,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。相信大家刚开始在做爬虫的时候,是不是requests和sound这两个库来使用,这样确实有助于我们学习...
    99+
    2023-06-02
  • Go语言中的映射类型如何使用?
    Go语言中的映射类型如何使用? 在Go语言中,映射(map)是一种内置的数据结构,用于存储键值对。映射允许通过键来快速检索值,类似于其他语言中的字典或哈希表。在本文中,我们将介绍Go语...
    99+
    2024-04-02
  • Python如何利用ROI进行图像合成
    本篇内容介绍了“Python如何利用ROI进行图像合成”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!之前使用seamlessClone来合成...
    99+
    2023-06-20
  • 如何在python中利用request库对cookie进行处理
    如何在python中利用request库对cookie进行处理?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python是什么意思Python是一种跨平台的、具...
    99+
    2023-06-06
  • PHP中如何利用Socket进行通信
    在PHP中利用Socket进行通信一直是一个比较常见的需求,无论是用于开发网络应用程序还是实现即时通讯功能,Socket都是一个非常重要的工具。通过Socket,我们可以在网络上创建一...
    99+
    2024-03-07
    php 通信 socket
  • 教你如何利用python进行数值分析
    目录一、准备二、三次样条插值三、最小二乘拟合四、拉格朗日乘子法一、准备 噪声是在拟合过程中常用的干扰手段,常用的噪声: 1.统一分布 U(a,b) f ( x ) = { 1 i f...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作